Pandas groupby에 기능을 적용하는 방법


다음 기본 구문을 사용하여 pandas DataFrame에서 groupby()apply() 함수를 함께 사용할 수 있습니다.

 df. groupby (' var1 '). apply ( lambda x: some function)

다음 예는 다음 pandas DataFrame에서 실제로 이 구문을 사용하는 방법을 보여줍니다.

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   ' points_for ': [18, 22, 19, 14, 11, 20, 28],
                   ' points_against ': [14, 21, 19, 14, 12, 20, 21]})

#view DataFrame
print (df)

  team points_for points_against
0 to 18 14
1 To 22 21
2 A 19 19
3 B 14 14
4 B 11 12
5 B 20 20
6 B 28 21

예제 1: groupby() 및 apply()를 사용하여 상대 빈도 찾기

다음 코드는 groupby( ) 및 apply() 함수를 사용하여 Pandas DataFrame에서 각 팀 이름의 상대 빈도를 찾는 방법을 보여줍니다.

 #find relative frequency of each team name in DataFrame
df. groupby (' team '). apply ( lambda x:x[' team ']. count ()/ df.shape [0])

team
A 0.428571
B 0.571429
dtype:float64

결과를 보면 A팀이 전체 행의 42.85%에 나타나고 B팀이 전체 행의 57.14%에 나타나는 것을 알 수 있습니다.

예제 2: groupby() 및 apply()를 사용하여 최대값 찾기

다음 코드는 groupby( ) 및 apply() 함수를 사용하여 각 팀의 최대 “points_for” 값을 찾는 방법을 보여줍니다.

 #find max "points_for" values for each team
df. groupby (' team '). apply ( lambda x:x[' points_for ']. max ())

team
At 22
B28
dtype: int64

결과를 보면 A팀의 최대득점은 22점, B팀의 최대득점은 28점임을 알 수 있다.

예제 3: groupby() 및 apply()를 사용하여 사용자 정의 계산 수행

다음 코드는 groupby( ) 및 apply() 함수를 사용하여 각 팀의 “points_for”와 “points_against” 간의 평균 차이를 찾는 방법을 보여줍니다.

 #find max "points_for" values for each team
df. groupby (' team '). apply ( lambda x: (x[' points_for '] - x[' points_against ']). mean ())

team
A 1.666667
B 1.500000
dtype:float64

결과를 보면 ‘득점’과 ‘반대’의 평균 차이가 A팀에서는 1.67 , B팀에서는 1.50 임을 알 수 있습니다.

추가 리소스

다음 튜토리얼에서는 Pandas에서 다른 일반적인 작업을 수행하는 방법을 설명합니다.

Pandas에서 GroupBy 합계를 수행하는 방법
Pandas에서 Groupby 및 Plot을 사용하는 방법
Pandas에서 GroupBy를 사용하여 고유한 값을 계산하는 방법

의견을 추가하다

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