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

Python Pandas – Index 객체에서 상대 빈도 구하기

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 옵션을 활용하면 단순 빈도가 아닌 전체 대비 비율을 손쉽게 확인할 수 있습니다.