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에서 막대 그래프를 만드는 방법

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다