Python Pandas

Pandas 다중 인덱스 사용 (set_index(), reset_index())

PyExplorer 2025. 2. 17. 09:29
728x90

Pandas 다중 인덱스 사용 (set_index(), reset_index())

Pandas에서 다중 인덱스를 사용하면 데이터를 계층적으로 정리하여 더욱 직관적으로 분석할 수 있습니다. 다중 인덱스는 set_index()를 사용하여 설정할 수 있으며, 필요할 때 reset_index()를 통해 일반 인덱스로 변환할 수도 있습니다. 이번 글에서는 다중 인덱스를 설정하고 활용하는 방법을 예제와 함께 살펴보겠습니다.


1. 다중 인덱스란?

Pandas의 다중 인덱스(MultiIndex)는 하나 이상의 열을 인덱스로 설정하여 데이터를 계층적으로 표현할 수 있는 기능입니다. 예를 들어, 지역별, 연도별 매출 데이터를 다룰 때 다중 인덱스를 활용하면 분석이 더욱 쉬워집니다.


2. set_index()를 활용한 다중 인덱스 설정

다중 인덱스는 set_index() 메서드를 사용하여 생성할 수 있습니다. 여러 개의 열을 지정하면 해당 열들이 계층적으로 인덱스로 변환됩니다.

예제 1: 다중 인덱스 생성

import pandas as pd

# 샘플 데이터 생성
data = {
    '지역': ['서울', '서울', '부산', '부산', '대구', '대구'],
    '연도': [2020, 2021, 2020, 2021, 2020, 2021],
    '매출': [100, 110, 90, 95, 80, 85]
}

# DataFrame 생성
df = pd.DataFrame(data)

# '지역'과 '연도'를 다중 인덱스로 설정
df_multi = df.set_index(['지역', '연도'])

print(df_multi)

출력 결과

          매출
지역  연도    
서울  2020  100
서울  2021  110
부산  2020   90
부산  2021   95
대구  2020   80
대구  2021   85

위와 같이 지역연도가 인덱스로 설정되면서 매출 값을 계층적으로 정리할 수 있습니다.


3. 다중 인덱스 데이터 접근

예제 2: 특정 인덱스의 데이터 선택

다중 인덱스를 사용하면 특정 인덱스 값을 지정하여 원하는 데이터를 추출할 수 있습니다.

# '서울'의 데이터를 선택
print(df_multi.loc['서울'])

출력 결과

      매출
연도     
2020  100
2021  110

또한, 다중 인덱스를 튜플 형태로 전달하여 특정 데이터를 선택할 수도 있습니다.

# '부산'의 2020년 데이터를 선택
print(df_multi.loc[('부산', 2020)])

출력 결과

매출    90
Name: (부산, 2020), dtype: int64

4. 다중 인덱스 초기화 (reset_index())

다중 인덱스를 사용하다가 다시 일반 데이터 프레임 형태로 변환하고 싶다면 reset_index()를 사용할 수 있습니다.

예제 3: 다중 인덱스 초기화

# 다중 인덱스를 일반 인덱스로 변환
df_reset = df_multi.reset_index()

print(df_reset)

출력 결과

   지역    연도   매출
0  서울  2020  100
1  서울  2021  110
2  부산  2020   90
3  부산  2021   95
4  대구  2020   80
5  대구  2021   85

다중 인덱스를 해제하면 원래 열(지역, 연도)이 다시 일반 열로 돌아갑니다.


5. 다중 인덱스 활용 예제

예제 4: 다중 인덱스를 활용한 그룹별 연산

다중 인덱스를 활용하면 특정 기준으로 그룹화하여 연산할 수 있습니다.

# 지역별 매출 평균 계산
mean_sales = df_multi.groupby(level='지역').mean()
print(mean_sales)

출력 결과

       매출
지역      
서울  105.0
부산   92.5
대구   82.5

이처럼 groupby()와 함께 사용하면 다중 인덱스를 효과적으로 활용할 수 있습니다.


6. 다중 인덱스 정렬

Pandas에서는 sort_index()를 사용하여 다중 인덱스를 정렬할 수 있습니다.

예제 5: 다중 인덱스 정렬

# 인덱스를 기준으로 정렬
df_sorted = df_multi.sort_index()
print(df_sorted)

위 코드를 실행하면 지역연도 기준으로 정렬된 데이터를 얻을 수 있습니다.


7. 결론

이번 포스팅에서는 Pandas의 다중 인덱스를 설정하는 set_index(), 초기화하는 reset_index(), 그리고 데이터를 선택하고 활용하는 다양한 방법을 살펴보았습니다. 다중 인덱스를 활용하면 계층적인 데이터를 효과적으로 분석할 수 있으며, groupby(), sort_index() 등의 기능과 함께 사용하면 더욱 강력한 데이터 분석이 가능합니다.

실제 데이터 분석에서 다중 인덱스를 적절히 활용하여 가독성과 분석 효율성을 높이시길 바랍니다.

728x90