pandas

[ pandas 기초] 컬럼명변경 pandas.rename

우언 2021. 12. 1. 15:40
import pandas as pd
df = pd.read_csv('C:\\Users\\user\\Desktop\\티스토리데이터\\수원도시공사_실내공기질 측정 정보_20201211.csv', encoding = 'euc-kr')
df.head(3)

주차장명 주소 규모(㎡) 미세먼지(㎍/㎡) 이산화탄소(ppm) 포름알데히드(㎍/㎡) 일산화탄소(ppm) 오존(ppm) 측정결과 데이터기준일
0 교동공영주차장 팔달구 향교로 140(교동) 9165.68 49.8 513.0 3.838 4.00 NaN 양호 2020/12/11
1 권선지하공영주차장 권선구 세지로 82번길 15-3(권선동) 2073.96 33.0 476.5 2.556 3.60 NaN 양호 2020/12/11
2 매봉공영주차장 영통구 동탄원천로 1109번길 61(매탄동) 4682.43 40.5 460.0 6.647 3.10 NaN 양호 2020/12/11

데이터 출처 :

https://www.data.go.kr/data/15025602/fileData.do

 

수원도시공사_실내공기질 측정 정보_20201211

수원도시공사 실내공기질 측정 정보 (주차장명, 주소, 규모, 미세먼지, 이산화탄소, 포름알데히드, 일산화탄소, 오존) 데이터를 제공합니다.

www.data.go.kr

 

 

1. columns에 리스트 넣기

df.columns = ['a', 'b', 'c', 'd', 'e', 'f',
       'g', 'h', 'i', 'j' ]
df.head(3)

a b c d e f g h i j
0 교동공영주차장 팔달구 향교로 140(교동) 9165.68 49.8 513.0 3.838 4.0 NaN 양호 2020/12/11
1 권선지하공영주차장 권선구 세지로 82번길 15-3(권선동) 2073.96 33.0 476.5 2.556 3.6 NaN 양호 2020/12/11
2 매봉공영주차장 영통구 동탄원천로 1109번길 61(매탄동) 4682.43 40.5 460.0 6.647 3.1 NaN 양호 2020/12/11

컬럼명이 알파벳으로 바뀜

단. 이경우 입력되는 리스트의 길이가 원데이터프레임의 길이와 일치 하지 않을시 에러발생

 

2. pandas의 rename 활용

 

원하는 컬럼만 이름 변경가능

df.rename(columns = {'c':'C','h':'H'}, inplace =True)
df.head(1)

a b C d e f g H i j
0 교동공영주차장 팔달구 향교로 140(교동) 9165.68 49.8 513.0 3.838 4.0 NaN 양호 2020/12/11

c와 h만 대문자로 변환

 

df.rename({'a':'A','b':'B','e':'E' }, axis = 1, inplace =True)
df.head(1)


A
B C d E f g H i j
0 교동공영주차장 팔달구 향교로 140(교동) 9165.68 49.8 513.0 3.838 4.0 NaN 양호 2020/12/11

axis를 활용해도 가능

 

이 형식을 포문을 활용해서 간단하게 모두 대문자로 바꿀 수 있음

 

for col in df.columns:
    df.rename({col:col.upper()}, axis = 1, inplace =True)
df.head(1)

A B C d E f g H i j
0 교동공영주차장 팔달구 향교로 140(교동) 9165.68 49.8 513.0 3.838 4.0 NaN 양호 2020/12/11

rename(axis) 를 활용한 방법은 인덱스에서도 동일적용가능

 

A 컬럼을 인덱스로 설정후 원하는 인덱스만 이름바꾸기

df.set_index('A', drop = True, inplace =True)
df.rename({'교동공영주차장':'교동'}, inplace = True )
df.head()

B C D E F G H I J
A








교동 팔달구 향교로 140(교동) 9165.68 49.8 513.0 3.838 4.00 NaN 양호 2020/12/11
권선지하공영주차장 권선구 세지로 82번길 15-3(권선동) 2073.96 33.0 476.5 2.556 3.60 NaN 양호 2020/12/11
매봉공영주차장 영통구 동탄원천로 1109번길 61(매탄동) 4682.43 40.5 460.0 6.647 3.10 NaN 양호 2020/12/11
영통공영주차장 영통구 봉영로 1598(영통동) 10974.16 54.4 498.7 3.639 4.97 NaN 양호 2020/12/11
영화동공영주차장 장안구 수성로 382번길 24(영화동) 5365.87 41.5 473.0 6.796 2.90 NaN 양호 2020/12/11
for idx in df.index:
    df.rename({idx:idx.replace('공영주차장','')}, inplace = True )
df.head()


B
C D E F G H I J
A








교동 팔달구 향교로 140(교동) 9165.68 49.8 513.0 3.838 4.00 NaN 양호 2020/12/11
권선지하 권선구 세지로 82번길 15-3(권선동) 2073.96 33.0 476.5 2.556 3.60 NaN 양호 2020/12/11
매봉 영통구 동탄원천로 1109번길 61(매탄동) 4682.43 40.5 460.0 6.647 3.10 NaN 양호 2020/12/11
영통 영통구 봉영로 1598(영통동) 10974.16 54.4 498.7 3.639 4.97 NaN 양호 2020/12/11
영화동 장안구 수성로 382번길 24(영화동) 5365.87 41.5 473.0 6.796 2.90 NaN 양호 2020/12/11

인덱스에서 공영주차장이라는 말을 제거하고 인덱스를 생성할 수 있다