위와 같은 멀티인덱스 + 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="_")
'Data' 카테고리의 다른 글
[tableau] date계산식, 표 색깔 채우기, 최대값과 최소값만 색깔 표시하기, 집계방식 평균 (743) | 2021.07.15 |
---|---|
[tableau] 선버스트 차트 만들기 (745) | 2021.07.15 |
[python] 국민청원 크롤링 ( Selenium, BeautifulSoup ) (753) | 2021.03.28 |
[python] 멜론차트 크롤링 ( Selenium, BeautifulSoup ) (741) | 2021.02.17 |
[python] 네이버 뉴스 기사 작성일, 제목, url 크롤링 ( BeautifulSoup ) (378) | 2021.02.16 |