Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python Pandas groupby로 직위(Designation)별 레코드 개수 계산하는 방법

이 글에서는 Pandasgroupby() 메서드를 사용하여 DataFrame을 특정 열(직위, Designation) 기준으로 그룹화한 뒤, 각 그룹에 속한 레코드의 개수를 계산하는 방법을 알아봅니다.

문제 정의

다음과 같은 DataFrame이 있고, 이를 'Designation'(직위) 열을 기준으로 그룹화하여 레코드 수를 집계한다고 가정해 보겠습니다.

Designation
architect     1
programmer    2
scientist     2

즉, architect는 1명, programmer는 2명, scientist는 2명으로 각 직위별 인원 수가 출력되어야 합니다.

해결 접근 방식

이 문제는 다음 두 단계로 해결할 수 있습니다.

  • 먼저 데이터를 담은 DataFrame을 정의합니다.

  • 'Designation' 열을 기준으로 groupby() 메서드를 적용하고, count()를 호출하여 각 그룹의 레코드 수를 계산합니다.

df.groupby(['Designation']).count()

예제 코드

아래 예제를 통해 실제 구현 과정을 자세히 살펴보겠습니다.

import pandas as pd
data = { 'Id':[1,2,3,4,5],
        'Designation':
['architect','scientist','programmer','scientist','programmer']}
df = pd.DataFrame(data)
print("DataFrame is\n",df)
print("groupby based on designation:")
print(df.groupby(['Designation']).count())

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

Designation
architect     1
programmer    2
scientist     2

코드 설명

먼저 Id와 Designation 두 개의 열을 가진 딕셔너리를 생성한 후, pd.DataFrame(data)로 DataFrame을 만듭니다. 이어서 df.groupby(['Designation'])이 'Designation' 열의 고유값(architect, scientist, programmer)별로 행들을 묶고, 마지막으로 .count()가 각 그룹에 포함된 레코드 수를 반환합니다.

참고로 count()는 결측치(NaN)를 제외한 값의 개수를 세므로, 단순히 행의 개수만 필요하다면 size()를 사용하는 것도 좋은 대안입니다.