2024. 9. 20. 12:26ㆍ1. Data Analyst/1-1. Python
매출 분석, 고객행동분석 등 실무에서 많이 쓰이는 그룹화!
그룹화 한 후 특정 조건에 부합하는 그룹만 필터링하고 싶다면??
데이터 분석을 진행하다 보면, 특정 조건을 만족하는 데이터만을 추출하고 싶을 때가 많습니다. Pandas 라이브러리는 이를 위한 강력한 도구를 제공하는데, 그 중 하나가 바로 filter() 메서드입니다. 특히, 그룹화한 후 조건에 맞는 데이터만을 선택할 때 filter() 메서드는 매우 유용합니다. 이번 포스트에서는 그룹화와 필터링의 조합을 통해 원하는 데이터를 효율적으로 추출하는 방법에 대해 알아보겠습니다.
그룹화와 필터링의 중요성
데이터셋이 클 경우, 특정 조건에 맞는 데이터를 찾는 것은 쉽지 않을 수 있습니다. 이럴 때는 데이터를 그룹화하여 각각의 그룹에 대해 조건을 적용하는 것이 효과적입니다. 그룹화는 데이터를 특정 기준에 따라 묶어주는 과정으로, 이후 필터링을 통해 필요한 정보만 남길 수 있습니다.
예제 데이터
가상의 거래 데이터 예시를 통해 설명하겠습니다:
Sale No.Saved Points
1 | 5 |
1 | -2 |
2 | 0 |
2 | -1 |
3 | -3 |
3 | -4 |
이 데이터에서 "Saved Points"가 0 이상인 거래만을 추출하고자 합니다. 이를 위해 먼저 데이터를 그룹화한 후 필터링할 것입니다.
코드 설명
import pandas as pd
# 예제 데이터프레임 생성
data = {
'Sale No.': [1, 1, 2, 2, 3, 3],
'Saved Points': [5, -2, 0, -1, -3, -4]
}
df = pd.DataFrame(data)
# 'Sale No.'로 그룹화하고 'Saved Points'가 0 이상인 그룹만 필터링
filtered_df = df.groupby('Sale No.').filter(lambda x: (x['Saved Points'] >= 0).any())
# 결과 출력
print(filtered_df)
코드 분석
- 데이터프레임 생성: 위의 예제 데이터를 바탕으로 DataFrame을 생성합니다.
- 그룹화: df.groupby('Sale No.')를 통해 "Sale No."로 데이터를 그룹화합니다. 이 과정에서 같은 "Sale No."를 가진 거래들이 하나의 그룹으로 묶입니다.
- 필터링: filter() 메서드를 사용하여 각 그룹에 대해 "Saved Points"가 0 이상인 값이 하나라도 존재하는지 확인합니다.
- x['Saved Points'] >= 0: 그룹 내 "Saved Points"가 0 이상인지 비교하여 불리언 시리즈를 생성합니다.
- .any(): 그룹 내에서 0 이상의 값이 하나라도 있으면 True를 반환합니다. 이로 인해 조건을 만족하는 그룹만 유지됩니다.
- 결과 출력: 필터링된 결과를 출력합니다.
최종 결과
위 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다:
Sale No.Saved Points
1 | 5 |
1 | -2 |
2 | 0 |
2 | -1 |
여기서 "Sale No."가 1과 2인 거래는 남고, "Sale No."가 3인 거래는 제거되었습니다. 이는 "Saved Points"가 0 이상인 거래만을 남긴 결과입니다.
결론
Pandas의 filter() 메서드는 그룹화된 데이터에서 특정 조건을 적용하여 원하는 데이터를 손쉽게 추출할 수 있는 강력한 도구입니다. 그룹화 후 필터링을 통해 우리는 더 정교하고 정확한 데이터 분석을 수행할 수 있습니다. 데이터 분석에서 이러한 기법을 활용하면, 원하는 정보를 더욱 효과적으로 찾을 수 있습니다.
'1. Data Analyst > 1-1. Python' 카테고리의 다른 글
[Python 실무] 그룹화 후 특정 행, 특정 열 삭제 (1) | 2024.11.10 |
---|---|
파이썬 실무 - 각 지점의 월별 최고 매출액 필터링 (0) | 2024.11.08 |
실무에서 유용한 Pandas 문자열 관련 메서드 10가지와 사용 예시 (0) | 2024.09.20 |
Python 실무 - 파이썬 그룹 기준으로 데이터 통일하기 (0) | 2024.08.30 |
[python 실무] PDF 이미지(PNG)로 전환 - 1초컷 (0) | 2024.07.11 |