1. .value_counts()의 기본 동작

1) 개념과 동작 원리

  • value_counts()는 Series에서 사용되며, 각 고유 값의 빈도수를 계산하여 내림차순으로 정렬된 Series를 반환합니다.
  • 인덱스는 고유 값, 값은 해당 고유 값의 빈도수로 구성됩니다.

예제 코드

import pandas as pd

data = pd.Series(['A', 'B', 'A', 'C', 'B', 'A'])
result = data.value_counts()
print(result)

실행 결과

A    3
B    2
C    1
dtype: int64
  • A, B, C: 데이터의 고유 값.
  • 3, 2, 1: 각각의 빈도수.
  • 기본적으로 내림차순으로 정렬됩니다.


2. .reset_index()의 동작

1) 개념과 동작 원리

  • reset_index()는 Series를 데이터프레임으로 변환하며, 기존 인덱스를 새로운 열로 이동시킵니다.

예제 코드

result_df = result.reset_index()
print(result_df)

실행 결과

  index  count
0     A      3
1     B      2
2     C      1
  • 기존 인덱스(A, B, C)가 새 열(index)로 이동됩니다.
  • 기존 값(3, 2, 1)은 새로운 열(0)로 변환됩니다.

(참고) count 컬럼명을 따로 지정하지 않았는데도 count로 출력되는 이유는 아래 항목에서 4. 컬럼명이 존재하는 경우와 없는 경우 -> 1) 컬럼명이 지정되지 않는 경우 를 참고


3. .value_counts().reset_index() 사용

1) 데이터프레임 형태로 변환

  • value_counts()reset_index()를 결합하여 고유 값과 빈도수를 데이터프레임 형태로 변환합니다.

예제 코드

data = pd.Series(['A', 'B', 'A', 'C', 'B', 'A'])
result_df = data.value_counts().reset_index()
result_df.columns = ['value', 'count']
print(result_df)

실행 결과

  value  count
0     A      3
1     B      2
2     C      1
  • value: 고유 값.
  • count: 각 고유 값의 빈도수.
  • 열 이름을 columns로 재설정하여 더 직관적인 이름을 부여합니다.


4. 컬럼명이 존재하는 경우와 없는 경우

1) 컬럼명이 지정되지 않는 경우

  • 기본적으로 index0로 설정됩니다.
  • value_counts()로 생성된 Series의 값이 명확하게 빈도수를 의미하는 경우, reset_index()는 두 번째 열의 이름을 자동으로 count로 설정합니다. 이를 통해 추가적인 열 이름 재설정 없이도 직관적인 데이터프레임을 얻을 수 있습니다.

예제 코드

series = pd.Series([3, 2, 1], index=['A', 'B', 'C'])
result_df = series.reset_index()
print(result_df)

실행 결과

  index  count
0     A      3
1     B      2
2     C      1

2) 컬럼명이 존재하는 경우

  • 기존 Series 인덱스의 이름이 데이터프레임의 첫 번째 열 이름으로 설정됩니다.

예제 코드

series = pd.Series([3, 2, 1], index=['A', 'B', 'C'])
series.index.name = 'value'
result_df = series.reset_index()
print(result_df)

실행 결과

  value  count
0     A      3
1     B      2
2     C      1


5. 자동 정렬

1) 자동 정렬 동작 원리

  • value_counts()는 기본적으로 빈도수에 따라 내림차순으로 정렬된 결과를 반환합니다.
  • reset_index()를 호출해도 정렬 상태는 유지됩니다.
  • 별도로 정렬 코드를 추가하지 않아도, 고유 값이 빈도수 기준으로 정렬된 결과를 얻을 수 있습니다.


6. 추가 정렬 옵션

1) 빈도수 오름차순 정렬

result_df = data.value_counts().reset_index()
result_df.columns = ['value', 'count']
result_df = result_df.sort_values(by='count', ascending=True)
print(result_df)

실행 결과

  value  count
0     C      1
1     B      2
2     A      3

2) 값 기준 정렬

result_df = data.value_counts().reset_index()
result_df.columns = ['value', 'count']
result_df = result_df.sort_values(by='value', ascending=True)
print(result_df)

실행 결과

  value  count
0     A      3
1     B      2
2     C      1