Pandas에서 groupby() 및 변환() 함수를 사용하는 방법


다음 메서드를 사용하여 pandas DataFrame에서 groupby()변환() 함수를 함께 사용할 수 있습니다.

방법 1: 내장 함수와 함께 groupby() 및 변환() 사용

 df[' new '] = df. groupby (' group_var ')[' value_var ']. transform (' mean ')

방법 2: 사용자 정의 함수와 함께 groupby() 및 변환() 사용

 df[' new '] = df. groupby (' group_var ')[' value_var ']. transform ( lambda x: some function)

다음 예에서는 다음 pandas DataFrame에서 실제로 각 메서드를 사용하는 방법을 보여줍니다.

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   ' points ': [30, 22, 19, 14, 14, 11, 20, 28]})

#view DataFrame
print (df)

  team points
0 to 30
1 to 22
2 to 19
3 to 14
4 B 14
5 B 11
6 B 20
7 B 28

예 1: 내장 함수와 함께 groupby() 및 변환() 사용

다음 코드는 groupby( ) 및 변환() 함수를 사용하여 Mean_points라는 DataFrame에 새 열을 추가하는 방법을 보여줍니다.

 #create new column called mean_points
df[' mean_points '] = df. groupby (' team ')[' points ']. transform (' mean ')

#view updated DataFrame
print (df)

  team points mean_points
0 to 30 21.25
1 to 22 21.25
2 A 19 21.25
3 to 14 21.25
4 B 14 18.25
5 B 11 18.25
6 B 20 18.25
7 B 28 18.25

A팀 선수의 평균 점수는 21.25 , B팀 선수의 평균 점수는 18.25 이므로 이 값은 새 열의 각 선수에게 적절하게 할당되었습니다.

sum() 과 같은 다른 내장 함수를 사용하여 각 팀이 획득한 점수의 합계를 표시하는 새 열을 생성할 수도 있습니다.

 #create new column called sum_points
df[' sum_points '] = df. groupby (' team ')[' points ']. transform (' sum ')

#view updated DataFrame
print (df)

  team points sum_points
0 to 30 85
1 to 22 85
2 A 19 85
3 to 14 85
4 B 14 73
5 B 11 73
6 B 20 73
7 B 28 73

A팀 선수들의 점수 합계는 85 점, B팀 선수들의 점수 합계는 73점 이므로 이 값은 새 열의 각 선수에게 적절하게 할당되었습니다.

예제 2: 사용자 정의 함수와 함께 groupby() 및 변환() 사용

다음 코드는 groupby( ) 및 변환() 함수를 사용하여 각 팀의 각 플레이어가 득점한 총점의 백분율을 계산하는 사용자 정의 함수를 만드는 방법을 보여줍니다.

 #create new column called percent_of_points
df[' percent_of_points '] = df. groupby (' team ')[' points ']. transform ( lambda x:x/ x.sum ())

#view updated DataFrame
print (df)

  team points percent_of_points
0 A 30 0.352941
1 A 22 0.258824
2 A 19 0.223529
3 A 14 0.164706
4 B 14 0.191781
5 B 11 0.150685
6 B 20 0.273973
7 B 28 0.383562

결과를 해석하는 방법은 다음과 같습니다.

  • A팀의 첫 번째 선수는 A팀 선수 중 총점 85점 중 30점을 획득했습니다. 따라서 총점에서 그의 득점 비율은 30/85 = 0.352941 입니다.
  • A팀의 두 번째 선수는 A팀 선수 중 총점 85점 중 22점을 기록했습니다. 따라서 총득점 비율은 22/85 = 0.258824 입니다.

등등.

우리가 원하는 사용자 정의 계산을 수행하기 위해 변환() 함수의 람다 인수를 사용할 수 있습니다.

추가 리소스

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

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

의견을 추가하다

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