데이터분석
pandas 테이블 양식 수정하기
jaehwi0823
2019. 10. 10. 20:13
Pandas DataFrame의 layout을 원하는 형태로 바꾸는 방법에 대해 살펴봅니다.
01. stack & melt & pivot
수평 열 이름을 수직의 관측치로 만들어줍니다.
# 모든 열의 이름을 Index로 변환
mydf.stack()
# stack 함수를 원복
mydf.unstack
# id_vars: 유지, value_vars:전치 *즁요한사실: 기존Index는 삭제됨
mydf.melt(id_vars=['col1'],
value_vars=['col2', 'col3'],
var_name='n1',
value_name='n2')
# melt 함수를 원복
mydf.pivot(index=['col1'],
columns=['n1'],
values='n2')
02. wide_to_long
동일한 용어가 반복되는 형태의 열이름은 변환이 쉽습니다.
# prefix로 시작되는 컬럼들을 sep 뒤의 문자로 나눔
# sep 뒤의 문자는 value_column_name이라는 column에 할당됨
pd.wide_to_long(mydf,
stubnames=['prefix1', 'prefix2'],
i=['fix_col_name'],
j='value_column_name',
sep='_')
pd.wide_to_long(mydf2,
stubnames=['prefix1', 'prefix2'],
i=['fix_col_name1', 'fix_col_name2'],
j='Label',
suffix='.+', #문자열
sep='_')
03. 이름 부여 후 테이블 배치
# column level별 이름을 지정
mydf = mydf.rename_axis(['name1', 'name2'],
axis='columns')
# 지정한 이름을 활용하여 swap
mydf.stack('name1').swaplevel('name1', 'n0',
axis='columns')
04. 열 분리
단일 열에 여러가지 정보가 종합된 경우 이를 분리해야 합니다.
# space를 활용해서 단일 열을 분리
newdf = mydf['mycol'].str.split(pat='. ', expand=True)