[Pandas] 데이터 재구조화(Reshaping) Pivot, Pivot_table - Cheat Sheet🔥

Jaeyoung·2022년 10월 23일
0
post-thumbnail

목표 설정

  • Pandas Cheat Sheet 에서 데이터 재구조화 학습하기
  • 학습 부분
    • Reshaping Data - Change layout, sorting, reindexing, renaming
      • Pivot
      • Pivot_table

Reshaping

  • 재구조화(Reshaping data) 종류
    • pd.melt(df) : 열을 모아 행으로 녹이기
    • pd.concat([df1, df2]) : 여러 데이터프레임 하나로 병합
    • df.pivot(columns='var', values='val') : 행을 열로 올리기
    • pd.pivot_table(df, values='val', index=[], columns=[], aggfunc=func) : 연산이 가능한 피벗 테이블

  • pivot 과 pivot_table 차이
    • pivot은 집계함수를 사용할 수 없는 반면, pivot_table 은 aggfunc 을 사용할 수 있음

실습에 사용할 데이터

  • Dataset : KOSIS 의료기관종별 환자 수 (2014 ~ 2017)
  • Dataset 미리보기 ( 아래 코드의 결과물 )
# 데이터 로드
df = pd.read_excel(file_name)
# 컬럼을 구성하고 있는 연월 정보를 행으로 녹이기
df_1 = df[df["의료기관종별(1)"]!="의료기관종별(1)"].copy()
df_1 = df_1.melt(id_vars="의료기관종별(1)", var_name="연도", value_name="환자수")
df_1.head()
의료기관종별(1)연도환자수
0전체20149105050.0
1상급종합병원20141615801.0
2종합병원20142929371.0
3병원20142751873.0
4요양병원2014267349.0

Pivot

  • index : 피봇테이블에서 index 로 설정할 컬럼명
  • columns : 피봇테이블에서 colum 으로 설정할 컬럼명
  • values : 데이터를 구성하는 값

Pivot_table

  • values : 데이터를 구성하는 값
  • index : 피봇테이블에서 index 로 설정할 컬럼명
  • columns : 피봇테이블에서 colum 으로 설정할 컬럼명
  • aggfunc : 연산 기능
  • fill_value : 결측치를 채우는 기능

실습으로 배우는 Pivot

  • 목표 : 행으로 구성하고있는 의료기관종별 데이터를 열로 올리고, 연도를 인덱스로 넣기
df_2.pivot(index="연도", columns="의료기관종별(1)")["환자수"].head()
# 위 코드와 같은 기능을 하는 코드
df_2.pivot(index="연도", columns="연도기관종별(1)", values="환자수").head()
의료기관종별(1)병원보건소보건의료원보건지소보건진료소상급종합병원요양병원의원전체조산원종합병원치과병원치과의원한방병원한의원
연도
20142751873.0-3257.0--1615801.0267349.01301524.09105050.0-2929371.03499.02.0202590.029784.0
2014.160630401.05934208.0634956.03949565.04543564.034915453.03018508.0537948803.0892637667.0-62107328.03299112.062456280.03934930.0109264559.0
2014.22841399.0-3318.0--1642113.0358071.01327641.09410734.0-2995106.03534.02.0209154.030396.0
20152866076.0-3126.0--1655144.0278419.01235564.09289026.0-2968978.03504.06.0245320.032889.0
2015.161411640.05577059.0589570.03646317.04419824.035945441.02789817.0531295541.0889305558.0-62302768.03633522.065292770.04149692.0108251597.0
  • 결과 : pivot 을 사용하면 원하는 컬럼을 index, columns, values 값으로 지정할 수 있다.
  • 위 테이블을 보면 연도가 마치 하나의 행으로 자리잡고 있는 것 처럼 보이지만, 출력된 값을 보면 아래와 같다.
  • 아래 그림과 같이 pivot 테이블의 구조를 형성한다.

참고문헌

profile
데이터 분린이:)

0개의 댓글