Pandas: 여러 열을 그룹화하고 집계하는 방법


Pandas DataFrame의 여러 열을 그룹화하고 집계하려는 경우가 종종 있습니다.

다행히도 pandas .groupby().agg() 함수를 사용하면 이 작업을 쉽게 수행할 수 있습니다.

이 튜토리얼에서는 이러한 기능의 실제 사용에 대한 몇 가지 예를 설명합니다.

예 1: 두 개의 열로 그룹화하고 평균 찾기

다음과 같은 팬더 DataFrame이 있다고 가정합니다.

 import pandas as pd

#createDataFrame
df = pd.DataFrame({'team': ['A', 'B', 'B', 'B', 'B', 'M', 'M', 'M'],
                   'position': ['G', 'G', 'F', 'G', 'F', 'F', 'C', 'C'],
                   'assists': [5, 7, 7, 8, 5, 7, 6, 9],
                   'rebounds': [11, 8, 10, 6, 6, 9, 6, 10]})

#view DataFrame
print (df)

  team position assists rebounds
0 AG 5 11
1 BG 7 8
2 BF 7 10
3 BG 8 6
4 BF 5 6
5 MF 7 9
6 MC 6 6
7 MC 9 10

다음 코드는 “팀” 및 “포지션” 열을 기준으로 그룹화하고 평균 패스를 찾는 방법을 보여줍니다.

 df. groupby (['team', 'position']). agg ({'assists': ['mean']}). reset_index ()


        team position assists
                          mean
0 A G 5.0
1 B F 6.0
2 B G 7.5
3 M C 7.5
4M F 7.0

출력은 다음을 알려줍니다.

  • A팀 G포지션 선수들의 평균 어시스트는 5.0 이다.
  • B팀의 F포지션 선수들의 평균 어시스트는 6.0 이다.
  • B팀의 G 포지션 선수들의 평균 어시스트는 7.5개이다 .

등등.

다음 코드를 사용하여 결과 DataFrame의 열 이름을 바꿀 수도 있습니다.

 #group by team and position and find mean assists
new = df. groupby (['team', 'position']). agg ({'assists': ['mean']}). reset_index ()

#rename columns
new.columns = ['team', 'pos', 'mean_assists']

#view DataFrame
print (new)

	team pos mean_assists
0 A G 5.0
1 B F 6.0
2 B G 7.5
3 M C 7.5
4M F 7.0

예 2: 두 개의 열로 그룹화하고 여러 통계 찾기

이전 예제와 동일한 pandas DataFrame을 사용한다고 가정해 보겠습니다.

 import pandas as pd

#createDataFrame
df = pd.DataFrame({'team': ['A', 'B', 'B', 'B', 'B', 'M', 'M', 'M'],
                   'position': ['G', 'G', 'F', 'G', 'F', 'F', 'C', 'C'],
                   'assists': [5, 7, 7, 8, 5, 7, 6, 9],
                   'rebounds': [11, 8, 10, 6, 6, 9, 6, 10]})

다음 코드는 “팀” 및 “포지션” 열로 그룹화된 중앙값 및 최대 리바운드 수를 찾는 방법을 보여줍니다.

 df. groupby (['team', 'position']). agg ({'rebounds': ['median', 'max']}). reset_index ()


        team position rebounds
                         median max
0 A G 11 11
1 B F 8 10
2 B G 7 8
3 M C 8 10
4 M F 9 9

출력은 다음을 알려줍니다.

  • A팀에서 G 포지션에 있는 선수들의 리바운드 중앙값은 11 입니다.
  • A팀의 G 포지션 선수들의 최대 리바운드는 11개이다 .
  • B팀 F포지션 선수들의 리바운드 중앙값은 8 이다.
  • B팀 F포지션 선수들의 최대 리바운드는 10개이다 .

등등.

추가 리소스

여러 조건에서 Pandas DataFrame을 필터링하는 방법
Pandas DataFrame에서 누락된 값을 계산하는 방법
여러 Pandas DataFrame을 스택하는 방법

의견을 추가하다

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