Insight to Ptofitc Pandas의 filter() 메서드: 그룹화 후 조건으로 필터링하기

Pandas의 filter() 메서드: 그룹화 후 조건으로 필터링하기

2024. 9. 20. 12:261. Data Analyst/1-1. Python

728x90
반응형

 
 

매출 분석, 고객행동분석 등 실무에서 많이 쓰이는 그룹화!
그룹화 한 후 특정 조건에 부합하는 그룹만 필터링하고 싶다면??

 
 
데이터 분석을 진행하다 보면, 특정 조건을 만족하는 데이터만을 추출하고 싶을 때가 많습니다. Pandas 라이브러리는 이를 위한 강력한 도구를 제공하는데, 그 중 하나가 바로 filter() 메서드입니다. 특히, 그룹화한 후 조건에 맞는 데이터만을 선택할 때 filter() 메서드는 매우 유용합니다. 이번 포스트에서는 그룹화와 필터링의 조합을 통해 원하는 데이터를 효율적으로 추출하는 방법에 대해 알아보겠습니다.

 

그룹화와 필터링의 중요성

데이터셋이 클 경우, 특정 조건에 맞는 데이터를 찾는 것은 쉽지 않을 수 있습니다. 이럴 때는 데이터를 그룹화하여 각각의 그룹에 대해 조건을 적용하는 것이 효과적입니다. 그룹화는 데이터를 특정 기준에 따라 묶어주는 과정으로, 이후 필터링을 통해 필요한 정보만 남길 수 있습니다.


예제 데이터

가상의 거래 데이터 예시를 통해 설명하겠습니다:
Sale No.Saved Points

15
1-2
20
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)

 

 

 

코드 분석

  1. 데이터프레임 생성: 위의 예제 데이터를 바탕으로 DataFrame을 생성합니다.
  2. 그룹화: df.groupby('Sale No.')를 통해 "Sale No."로 데이터를 그룹화합니다. 이 과정에서 같은 "Sale No."를 가진 거래들이 하나의 그룹으로 묶입니다.
  3. 필터링: filter() 메서드를 사용하여 각 그룹에 대해 "Saved Points"가 0 이상인 값이 하나라도 존재하는지 확인합니다.
    • x['Saved Points'] >= 0: 그룹 내 "Saved Points"가 0 이상인지 비교하여 불리언 시리즈를 생성합니다.
    • .any(): 그룹 내에서 0 이상의 값이 하나라도 있으면 True를 반환합니다. 이로 인해 조건을 만족하는 그룹만 유지됩니다.
  4. 결과 출력: 필터링된 결과를 출력합니다.

 

 

최종 결과

위 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다:
Sale No.Saved Points

15
1-2
20
2-1

여기서 "Sale No."가 1과 2인 거래는 남고, "Sale No."가 3인 거래는 제거되었습니다. 이는 "Saved Points"가 0 이상인 거래만을 남긴 결과입니다.

 

 

 

결론

Pandas의 filter() 메서드는 그룹화된 데이터에서 특정 조건을 적용하여 원하는 데이터를 손쉽게 추출할 수 있는 강력한 도구입니다. 그룹화 후 필터링을 통해 우리는 더 정교하고 정확한 데이터 분석을 수행할 수 있습니다. 데이터 분석에서 이러한 기법을 활용하면, 원하는 정보를 더욱 효과적으로 찾을 수 있습니다.

728x90
반응형