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

Pandas 시리즈에서 각 항목의 빈도 계산하기: value_counts() 활용법

데이터 분석을 하다 보면 특정 값이 데이터에 몇 번 등장하는지, 즉 각 항목의 빈도(frequency)를 확인해야 하는 경우가 매우 자주 있습니다. 이 글에서는 Pandas 라이브러리의 value_counts() 함수를 사용해 시리즈(Series)에 담긴 각 요소의 빈도를 간단하게 계산하는 방법을 소개합니다.

value_counts() 함수란?

value_counts()는 pandas에서 제공하는 대표적인 빈도 분석 함수로, 시리즈 내부의 고유값(unique values)과 각 값의 등장 횟수를 반환합니다. 결과는 별도 설정 없이도 빈도가 높은 순서대로 자동 정렬되어 출력되므로, 어떤 값이 가장 많이 나타나는지 한눈에 파악할 수 있습니다.

알고리즘

1단계: 분석할 Pandas 시리즈를 정의합니다.
2단계: value_counts() 함수를 호출하여 각 항목의 빈도를 출력합니다.

예제 코드

아래 예제에서는 숫자 10부터 60까지 다양한 값이 섞여 있는 시리즈를 만들고, 각 값의 빈도를 계산해 보겠습니다.

import pandas as pd

series = pd.Series([10,10,20,30,40,30,50,10,60,50,50])
print("Series:\n", series)

frequency = series.value_counts()
print("\nFrequency of elements:\n", frequency)

실행 결과

Series:
0     10
1     10
2     20
3     30
4     40
5     30
6     50
7     10
8     60
9     50
10    50
dtype: int64

Frequency of elements:
50    3
10    3
30    2
20    1
40    1
60    1
dtype: int64

결과 해석

출력 결과를 살펴보면 다음과 같은 인사이트를 얻을 수 있습니다.

  • 5010은 각각 3번씩 등장해 가장 빈도가 높은 값입니다.
  • 30은 2번, 나머지 값들(20, 40, 60)은 1번씩 등장했습니다.
  • 결과는 Series 형태로 반환되며, 인덱스에는 원래의 값, 값(value)에는 빈도가 저장됩니다.

추가 팁: 유용한 옵션들

value_counts()는 다음과 같은 옵션을 함께 사용하면 더욱 편리합니다.

  • normalize=True: 전체 개수 대비 비율(상대 빈도)을 반환합니다.
  • ascending=True: 결과를 오름차순으로 정렬합니다.
  • dropna=False: 결측치(NaN)도 빈도 계산에 포함합니다.
# 상대 빈도(비율) 구하기
ratio = series.value_counts(normalize=True)
print(ratio)

이처럼 value_counts() 하나만으로 범주형 데이터의 분포를 빠르게 파악할 수 있어, 탐색적 데이터 분석(EDA) 단계에서 필수적인 도구라고 할 수 있습니다.