Pandas: nlargest()와 함께 groupby를 사용하는 방법
다음 구문을 사용하여 pandas DataFrame에서 그룹별로 n개의 가장 큰 값을 표시할 수 있습니다.
#display two largest values by group df. groupby (' group_var ')[' values_var ']. nlargest ( 2 )
그리고 다음 구문을 사용하여 Pandas DataFrame의 그룹당 n개의 가장 큰 값에 대해 특정 작업(합계 계산 등)을 수행할 수 있습니다.
#find sum of two largest values by group df. groupby (' group_var ')[' values_var ']. apply ( lambda grp: grp.nlargest ( 2 ) .sum ())
다음 예에서는 다음 pandas DataFrame에서 실제로 각 메서드를 사용하는 방법을 보여줍니다.
import pandas as pd
#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B'],
' points ': [12, 29, 34, 14, 10, 11, 7, 36, 34, 22]})
#view DataFrame
print (df)
team points
0 to 12
1 to 29
2 to 34
3 to 14
4 to 10
5 B 11
6 B 7
7 B 36
8 B 34
9 B 22
예시 1: 그룹별로 N개의 가장 큰 값 표시
다음 구문을 사용하여 팀별 로 그룹화된 두 개의 가장 큰 점수 값을 표시할 수 있습니다.
#display two largest points values grouped by team
df. groupby (' team ')[' points ']. nlargest ( 2 )
team
At 2 34
1 29
B 7 36
8 34
Name: points, dtype: int64
결과에는 원본 DataFrame의 인덱스 위치와 함께 각 팀 의 가장 큰 두 포인트 값이 표시됩니다.
예시 2: 그룹당 N개의 가장 큰 값에 대해 작업 수행
다음 구문을 사용하여 팀별 로 그룹화된 두 개의 가장 큰 포인트 값의 합을 계산할 수 있습니다.
#calculate sum of two largest points values for each team
df. groupby (' team ')[' points ']. apply ( lambda grp: grp.nlargest ( 2 ) .sum ())
team
At 63
B70
Name: points, dtype: int64
결과를 해석하는 방법은 다음과 같습니다.
- A팀의 가장 큰 두 포인트 값의 합은 63 이다.
- B팀의 가장 큰 두 포인트 값의 합은 70 이다.
유사한 구문을 사용하여 팀별 로 그룹화된 두 개의 가장 큰 포인트 값의 평균을 계산할 수 있습니다.
#calculate mean of two largest points values for each team
df. groupby (' team ')[' points ']. apply ( lambda grp: grp.nlargest ( 2 ) .mean ())
team
At 31.5
B 35.0
Name: points, dtype: float64
결과를 해석하는 방법은 다음과 같습니다.
- A팀의 최고점 2개 점수의 평균은 31.5점 이다.
- B팀의 최고점 2개 점수의 평균은 35.0 이다.
참고 : 여기에서 GroupBy 기능에 대한 전체 문서를 찾을 수 있습니다.
추가 리소스
다음 튜토리얼에서는 Pandas에서 다른 일반적인 작업을 수행하는 방법을 설명합니다.
Pandas: 그룹당 누적 합계를 계산하는 방법
Pandas: 그룹별로 고유한 값을 계산하는 방법
Pandas: 그룹별로 모드를 계산하는 방법
Pandas: 그룹별 상관관계를 계산하는 방법