⚙️ Tech/Pandas
[pandas] value_counts
fiftyline
2025. 2. 9. 14:55
[ value_counts ]
: 고유한 row의 수를 집계
데이터를 먼저 세팅한다.
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]})
- 모든 컬럼에 대해 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 | 컬럼별 | 개수 |
0 | 1 | 10 |
1 | 2 | 4 |
2 | 3 | 2 |