Pandas: where 조건과 함께 group by를 사용하는 방법


Pandas에서 Where 조건과 함께 그룹화를 사용하는 가장 쉬운 방법은 query() 함수를 사용하는 것입니다.

 df. query (" team == 'A' "). groupby ([" position "])[" points "]. mean (). reset_index ()

이 특정 예는 position 별로 그룹화된 points 의 평균 값을 계산합니다. 여기서 팀은 일부 pandas DataFrame에서 “A”와 같습니다.

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

예: Pandas에서 Where 조건과 함께 Group By를 사용하는 방법

다양한 농구 선수에 대한 정보가 포함된 다음과 같은 pandas DataFrame이 있다고 가정합니다.

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'B'],
                   ' position ': ['G', 'G', 'F', 'F', 'F', 'G', 'G', 'F'],
                   ' points ': [22, 14, 15, 10, 8, 29, 33, 18]})

#view DataFrame
print (df)

  team position points
0 AG 22
1 AG 14
2 AF15
3 AF 10
4 AF 8
5 BG 29
6 BG 33
7 BF 18

다음 코드를 사용하여 팀이 “A”인 위치 별로 그룹화된 평균 포인트 값을 계산할 수 있습니다.

 #calculate mean value of points, grouped by position, where team == 'A'
df. query (" team == 'A' "). groupby ([" position "])[" points "]. mean (). reset_index ()

        position points
0 F 11.0
1G 18.0

결과에서 우리는 다음을 볼 수 있습니다:

  • A팀의 “F” 위치에 있는 선수의 평균 점수는 11 입니다.
  • A팀의 “G” 포지션에 있는 선수들의 평균 점수는 18점 입니다.

여러 조건이 충족되는 행을 찾기 위해 query() 함수에서 & 연산자를 사용할 수도 있습니다.

예를 들어, 다음 코드는 position 별로 그룹화된 평균 점수 값을 계산하는 방법을 보여줍니다. 여기서 팀은 “A” 이고 position은 “G”입니다.

 #calculate mean value of points by position where team is 'A' and position is 'G'
df. query (" team=='A' & position=='G' "). groupby ([" position "])[" points "]. mean (). reset_index ()

	position points
0G 18.0

결과를 보면 A팀의 “G” 포지션에 있는 선수들의 평균 포인트 값이 18 임을 알 수 있습니다.

query() 함수에 두 가지 조건을 지정했기 때문에 두 조건을 모두 만족하는 행만 사용되었습니다.

추가 리소스

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

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

의견을 추가하다

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