Data
[python] 멀티인덱스 정리, pd.wide_to_long
arehoow
2021. 6. 17. 11:13
위와 같은 멀티인덱스 + wide form의 자료를 아래와 같은 깔끔한 long form으로 정리하는 법
1. 멀티인덱스 확인
df = pd.read_csv("고령인구비율_시도_시_군_구__20210518193531.csv", encoding="cp949", header=[0,1])
df.columns
공공기관의 데이터 경우 encoding = "cp949"로 읽어줘야 깨짐없이 제대로 읽을 수 있다.
컬럼형태가 멀티인덱스 형식으로 되어있음을 확인
이제 멀티컬럼을 하나의 컬럼으로 바꿔보겠다.
ex) ( '2000', '고령인구비율' ) -> 고령인구비율_2000
2. 멀티인덱스를 하나의 컬럼명으로 바꾸기
# 멀티 인덱스 순서 바꾸기
col_list = []
for i in df.columns:
a = i[0]
b = i[1]
a,b = b,a
col_list.append((a,b))
# '_'로 두 인덱스 조인
col = list(map(lambda x: '_'.join(x), col_list))
col
df.columns = col # 데이터 컬럼 변경
3. 데이터를 wide form 에서 long form으로 변경하기
df["id"] = df.index
df = pd.wide_to_long(df,["고령인구비율<br>(A÷B×100) (%)","65세이상인구<br>(A) (명)","전체인구<br>(B) (명)"]
,i="id", j="year", sep="_")