[pandas] value_counts

yh o·2024년 5월 15일
import pandas as pd
df =  pd.DataFrame({'col1':[1,1,1,1,1,1,1,1,1,2,2,2,2,3,3,1], 
               'col2':['A','A','A','B','B','B','B','D', 'D','C', 'C', 'A','A','A',None,None]})

[ value_counts ]

고유한 row의 수를 집계


- 모든 컬럼에 대해 count

df.value_counts()

# 결과
> col1  col2
1     B       4
      A       3
      D       2
2     A       2
      C       2
3     A       1

- 지정한 컬럼에 대해 count

df['col2'].value_counts()
df.value_counts(subset=['col1','col2'])

# 결과
> col2
A    6
B    4
D    2
C    2

> col1  col2
1     B       4
      A       3
      D       2
2     A       2
      C       2
3     A       1

- NA 포함 출력 (default: dropna=True)

df.value_counts(dropna=False)

# 결과
> col2
A       6
B       4
D       2
C       2
None    2

- 비율 출력 (default: normalize=False)

df.value_counts(normalize=True)

# 결과
> col1  col2
1     B       0.285714
      A       0.214286
      D       0.142857
2     A       0.142857
      C       0.142857
3     A       0.071429



정렬


- 정렬하지않음 (default: sort=True)

df.value_counts(sort=False)

# 결과
> col1  col2
1     A       3
      B       4
      D       2
2     A       2
      C       2
3     A       1

- 오름차순 정렬

df.value_counts(sort=True, ascending=True)

# 결과
> col1  col2
3     A       1
1     D       2
2     A       2
      C       2
1     A       3
      B       4



출력


- 조건(n개 이상) 출력

df['col1'].value_counts().loc[lambda x:x>=3] #3개이상인 값

#결과
> col1  col2
1     B       4
      A       3

- 데이터프레임으로 변환

df1 = df['col1'].value_counts().reset_index()
df1.rename(columns={'col1':'컬럼별','count':'개수'})
index컬럼별개수
0110
124
232

0개의 댓글