Python/Pandas

[Pandas] 파이썬 데이터프레임 특정 값, 조건 만족 행 개수 세기

jimmy_AI 2022. 6. 5. 22:10
반응형

파이썬 판다스 특정 값/조건 개수 조회 방법 정리

파이썬의 데이터프레임에서 판다스 모듈을 통해 특정 값의 개수나 조건을 만족하는 행의 개수를

세는 방법을 간략하게 정리해보도록 하겠습니다.

 

이해를 돕기 위하여 아래와 같은 간단한 데이터프레임 df를 예시로 가정해보겠습니다.

import pandas as pd

a = {"A" : [10, 10, 10, 100, 100, 100], "B" : ['aaa', 'aaa', 'bbb', 'bbb', 'ccc', 'ccc'], "C" : [10, 20, 30, 40, 50, 60]}
df = pd.DataFrame(a)

df

 

 

특정 값 개수 조회 방법 1 : len + loc (또는 loc + shape[0]) 이용

첫 번째로 특정 값을 카운팅하는 방법은 df.loc[df[열 이름] = 값] 형태로 특정 값을

가진 행들을 조회한 뒤, len 메소드로 감싸서 개수를 세는 방법입니다.

 

예시로, A열에서 10인 값의 개수를 센다면 아래와 같이 코드를 작성해주시면 됩니다.

len(df.loc[df['A'] == 10]) # 3

참고로, loc 적용 후 shape 속성의 0번 인덱스 값을 조회해도 마찬가지 결과가 나타납니다.

df.loc[df['A'] == 10].shape[0] # 3

 

 

특정 값 개수 조회 방법 2 : collections 모듈의 Counter 메소드 활용

딕셔너리에서 개수를 셀 때와 마찬가지로, 열 1개를 나타내는 Series 자료형을 가져와

collections 모듈의 Counter 메소드로 각 값들의 개수들을 전부 가져올 수 있습니다.

 

B열의 각 값들의 개수를 전부 조회하여 가져오고,

이 중 'aaa' 값의 개수만 따로 뽑은 예시는 다음과 같습니다.

from collections import Counter

# B열의 모든 값 개수 조회 
Counter(df['B']) # Counter({'aaa': 2, 'bbb': 2, 'ccc': 2})

# B열에서 'aaa' 값 개수 조회
Counter(df['B'])['aaa'] # 2

 

반응형

 

특정 조건 행 개수 세기 : 위의 방법 1과 동일

특정 조건을 만족하는 행의 개수도 특정 값을 세는 방법과 동일하게 적용이 가능합니다.

 

예를 들어, C열의 값이 35보다 큰 행들의 개수를 세려면 아래와 같이 조건에서 ==만 >로 바꿔서

len + loc 조합 혹은 loc + shape[0] 조합으로 마찬가지 조회를 할 수 있습니다.

len(df.loc[df['C'] > 35]) # 3

df.loc[df['C'] > 35].shape[0] # 3

 

 

조건이 여러 개인 경우 조건 만족 행 개수 세기

만일 조건이 여러 개로 복잡한 경우, loc 메소드 내에서 조건마다 괄호인 ()로 묶어

and는 &로, or은 | 기호로 이어주시면 됩니다.

 

이후, len 메소드 또는 shape[0] 속성으로 개수를 가져오시는 과정은 동일합니다.

B열의 값이 'bbb'이면서 C열의 값이 35보다 큰 경우의 개수를 센 예시는 아래와 같습니다.

len(df.loc[(df['B'] == 'bbb') & (df['C'] > 35)]) # 1

df.loc[(df['B'] == 'bbb') & (df['C'] > 35)].shape[0] # 1