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()
등의 기능과 함께 사용하면 더욱 강력한 데이터 분석이 가능합니다.
실제 데이터 분석에서 다중 인덱스를 적절히 활용하여 가독성과 분석 효율성을 높이시길 바랍니다.
'Python Pandas' 카테고리의 다른 글
Pandas Pivot Table 활용 (pivot_table()) (0) | 2025.02.19 |
---|---|
Pandas 그룹화(groupby()) 및 집계 함수(agg(), mean(), sum()) (0) | 2025.02.18 |
Pandas에서 조건부 필터링 (Conditional Filtering) (0) | 2025.02.16 |
Pandas에서 행과 열 선택: loc[], iloc[], at[], iat[] (0) | 2025.02.15 |
Pandas 데이터 변환과 가공 - 타입 변환 [ astype() ] (0) | 2025.02.14 |