Pandas의 Index 객체에서 상대 빈도(relative frequency)를 구하려면 index.value_counts() 메서드에 normalize 매개변수를 True로 설정하여 사용하면 됩니다.
normalize=True로 지정하면 각 고유 값의 개수가 전체 합으로 나누어져, 전체에서 차지하는 비율이 반환됩니다.
1. 라이브러리 가져오기
먼저 필요한 라이브러리를 임포트합니다.
import pandas as pd
2. Pandas 인덱스 생성
Pandas 인덱스를 생성합니다.
index = pd.Index([50, 10, 70, 110, 90, 50, 110, 90, 30])
생성한 인덱스를 출력해 확인합니다.
print("Pandas Index...\n", index)3. 상대 빈도 계산하기
value_counts()를 사용하면 고유 값별 개수를 구할 수 있습니다. 여기에 normalize=True를 설정하면 개수가 아닌 상대 빈도(비율)가 반환됩니다.
print("\n모든 값을 총합으로 나누어 상대 빈도를 구합니다...\n", index.value_counts(normalize=True))전체 예제 코드
다음은 위 내용을 모두 포함한 전체 코드입니다.
import pandas as pd
# Pandas 인덱스 생성
index = pd.Index([50, 10, 70, 110, 90, 50, 110, 90, 30])
# Pandas 인덱스 출력
print("Pandas Index...\n", index)
# 인덱스의 요소 개수 반환
print("\n인덱스의 요소 개수...\n", index.size)
# 데이터의 dtype 반환
print("\ndtype 객체...\n", index.dtype)
# value_counts()로 고유 값 개수 확인
# normalize=True로 설정하여 상대 빈도 구하기
print("\n모든 값을 총합으로 나누어 상대 빈도를 구합니다...\n", index.value_counts(normalize=True))실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Pandas Index... Int64Index([50, 10, 70, 110, 90, 50, 110, 90, 30], dtype='int64') 인덱스의 요소 개수... 9 dtype 객체... int64 모든 값을 총합으로 나누어 상대 빈도를 구합니다... 50 0.222222 110 0.222222 90 0.222222 10 0.111111 70 0.111111 30 0.111111 dtype: float64
결과 해석
출력 결과를 보면 50, 110, 90은 각각 두 번씩 등장하여 상대 빈도가 약 0.2222(22.22%)이고, 10, 70, 30은 한 번씩만 등장하여 약 0.1111(11.11%)임을 알 수 있습니다. 이처럼 normalize=True 옵션을 활용하면 단순 빈도가 아닌 전체 대비 비율을 손쉽게 확인할 수 있습니다.