Pandas에서 항목(값)의 빈도를 계산하려면 Series.value_counts() 메서드를 사용하면 됩니다. 이 메서드는 특정 열에 포함된 각 고유 값이 몇 번 등장하는지 손쉽게 세어 줍니다.
먼저 예제에 사용할 DataFrame을 생성해 보겠습니다.
# DataFrame 생성
dataFrame = pd.DataFrame({'Car': ['BMW', 'Mercedes', 'Lamborghini', 'Audi', 'Mercedes', 'Porsche', 'Lamborghini', 'BMW'],
'Place': ['Delhi', 'Hyderabad', 'Chandigarh', 'Bangalore', 'Hyderabad', 'Mumbai', 'Mumbai', 'Pune'],
'UnitsSold': [95, 80, 80, 75, 92, 90, 95, 50]})value_counts()로 빈도 계산하기
'Car' 열의 항목별 빈도는 다음과 같이 value_counts() 메서드를 호출하여 구할 수 있습니다.
# 'Car' 열의 빈도 계산
count1 = dataFrame['Car'].value_counts()
print("\nCar 열의 개수")
print(count1)같은 방식으로 다른 열의 빈도도 계산할 수 있습니다. 아래는 Pandas DataFrame에서 각 열의 항목 빈도를 계산하는 전체 코드입니다.
전체 예제 코드
import pandas as pd
# DataFrame 생성
dataFrame = pd.DataFrame({'Car': ['BMW', 'Mercedes', 'Lamborghini', 'Audi', 'Mercedes', 'Porsche', 'Lamborghini', 'BMW'],
'Place': ['Delhi', 'Hyderabad', 'Chandigarh', 'Bangalore', 'Hyderabad', 'Mumbai', 'Mumbai', 'Pune'],
'UnitsSold': [95, 80, 80, 75, 92, 90, 95, 50]})
print("Dataframe...")
print(dataFrame)
# 'Car' 열의 빈도 계산
count1 = dataFrame['Car'].value_counts()
print("\nCar 열의 개수")
print(count1)
# 'Place' 열의 빈도 계산
count2 = dataFrame['Place'].value_counts()
print("\nPlace 열의 개수")
print(count2)
# 'UnitsSold' 열의 빈도 계산
count3 = dataFrame['UnitsSold'].value_counts()
print("\nUnitsSold 열의 개수")
print(count3)실행 결과
위 코드를 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.
Dataframe...
Car Place UnitsSold
0 BMW Delhi 95
1 Mercedes Hyderabad 80
2 Lamborghini Chandigarh 80
3 Audi Bangalore 75
4 Mercedes Hyderabad 92
5 Porsche Mumbai 90
6 Lamborghini Mumbai 95
7 BMW Pune 50
Car 열의 개수
BMW 2
Lamborghini 2
Mercedes 2
Audi 1
Porsche 1
Name: Car, dtype: int64
Place 열의 개수
Mumbai 2
Hyderabad 2
Chandigarh 1
Pune 1
Delhi 1
Bangalore 1
Name: Place, dtype: int64
UnitsSold 열의 개수
95 2
80 2
92 1
75 1
90 1
50 1
Name: UnitsSold, dtype: int64정리
출력 결과를 보면 'Car' 열에서는 BMW, Lamborghini, Mercedes가 각각 2번씩 등장했고, 'Place' 열에서는 Mumbai와 Hyderabad가 각각 2번씩 나타난 것을 확인할 수 있습니다. 이처럼 value_counts()는 데이터 분석 시 범주형 데이터의 분포를 파악하는 데 매우 유용한 기본 도구입니다. 참고로 반환되는 결과는 내림차순으로 정렬된 Series 형태이며, normalize=True 옵션을 사용하면 상대 빈도(비율)도 함께 구할 수 있습니다.