Pandas: groupby를 사용하고 조건부로 계산하는 방법
다음 기본 구문을 사용하여 Pandas DataFrame에서 조건을 사용하여 그룹화 및 개수 계산을 수행할 수 있습니다.
df. groupby (' var1 ')[' var2 ']. apply ( lambda x:(x==' val '). sum ()). reset_index (name=' count ')
이 특정 구문은 var1을 기준으로 DataFrame의 행을 그룹화한 다음 var2가 “val”과 동일한 행 수를 계산합니다.
다음 예에서는 실제로 이 구문을 사용하는 방법을 보여줍니다.
예: Pandas의 조건이 있는 Groupby 및 Count
다양한 농구 선수에 대한 정보가 포함된 다음과 같은 pandas DataFrame이 있다고 가정합니다.
import pandas as pd #createDataFrame df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'], ' pos ': ['Gu', 'Fo', 'Fo', 'Fo', 'Gu', 'Gu', 'Fo', 'Fo'], ' points ': [18, 22, 19, 14, 14, 11, 20, 28]}) #view DataFrame print (df) team pos points 0 A Gu 18 1 A Fo 22 2 A Fo 19 3 A Fo 14 4 B Gu 14 5 B Gu 11 6 B Fo 20 7 B Fo 28
다음 코드는 DataFrame을 팀 변수로 그룹화하고 pos 변수가 “Gu”인 행 수를 계산하는 방법을 보여줍니다.
#groupby team and count number of 'pos' equal to 'Gu' df_count = df. groupby (' team ')[' pos ']. apply ( lambda x: (x==' Gu '). sum ()). reset_index (name=' count ') #view results print (df_count) team count 0 to 1 1 B 2
결과에서 우리는 다음을 볼 수 있습니다:
- A팀에는 pos 열이 “Gu”와 동일한 행이 1 개 있습니다.
- B팀에는 pos 열이 “Gu”와 동일한 2개의 행이 있습니다.
유사한 구문을 사용하여 그룹화를 수행하고 숫자 조건으로 개수를 계산할 수 있습니다.
예를 들어 다음 코드는 팀 변수별로 그룹화하고 포인트 변수가 15보다 큰 행 수를 계산하는 방법을 보여줍니다.
#groupby team and count number of 'points' greater than 15 df_count = df. groupby (' team ')[' points ']. apply ( lambda x: (x>15). sum ()). reset_index (name=' count ') #view results print (df_count) team count 0 to 3 1 B 2
결과에서 우리는 다음을 볼 수 있습니다:
- A팀에는 포인트 열이 15보다 큰 라인이 3 개 있습니다.
- B팀에는 포인트 열이 15보다 큰 라인이 2 개 있습니다.
유사한 구문을 사용하여 원하는 특정 조건으로 그룹화 및 개수를 계산할 수 있습니다.
추가 리소스
다음 튜토리얼에서는 Pandas에서 다른 일반적인 작업을 수행하는 방법을 설명합니다.
Pandas GroupBy를 사용하여 고유한 값을 계산하는 방법
Pandas Groupby에 기능을 적용하는 방법
Pandas GroupBy에서 막대 그래프를 만드는 방법