데이터 피벗팅

Julia로 하는 데이터 조작

Katerina Zahradova

Instructor

피벗 테이블

  • 데이터를 요약하는 방법
  • 데이터를 더 읽기 쉽게 열·행을 재구성
Julia로 하는 데이터 조작

unstack()로 피벗 테이블

unstack 구조

Julia로 하는 데이터 조작

피벗에 unstack() 사용

# unstack으로 피벗하기
# unstack(DataFrame, :col_as_rows, :col_as_cols, :values, combine = f_to_aggregate)

unstack(penguins, :species, :sex, :body_mass_g, combine = median)
3×3 DataFrame
Row  species   MALE     FEMALE
     String15  Float64  Float64
_____________________________________
1    Adelie    4000.0   3400.0
2    Chinstrap 3950.0   3550.0
3    Gentoo    5500.0   4700.0
Julia로 하는 데이터 조작

여러 열을 행으로 피벗팅

# 더 많은 열을 행으로 피벗
unstack(penguins, [:species, :island], :sex, :body_mass_g, combine = median)
5×4 DataFrame
Row  species    island     MALE       FEMALE
     String15   String15   Float64?   Float64?
_____________________________________________________
1    Adelie     Torgersen  4000.0    3400.0
2    Adelie     Biscoe     4000.0    3375.0
3    Adelie     Dream      3987.5    3400.0
4    Chinstrap  Dream      3950.0    3550.0
5    Gentoo     Biscoe     5500.0    4700.0
Julia로 하는 데이터 조작

다른 위치의 여러 열로 피벗팅

# 여러 열을 열로 사용
unstack(penguins, :sex, [:species, :island], :body_mass_g, combine = sum)
MethodError: no method matching 
unstack(::DataFrame, ::Symbol, ::Vector{Symbol}, ::Symbol; combine = sum)
Julia로 하는 데이터 조작

결측치

# 특정 조합에 결측치가 있음
unstack(penguins_missing, :species, :sex, :body_mass_g, combine = median)
3×3 DataFrame
Row  species   MALE     FEMALE
     String15  Float64  Float64?
_____________________________________
1    Adelie    4000.0   3400.0
2    Chinstrap 3950.0   3550.0
3    Gentoo    5500.0   missing
Julia로 하는 데이터 조작

결측치 대체

# 특정 조합에 결측치가 있음
unstack(penguins_missing, :species, :sex, :body_mass_g, combine = median, fill = -1)
3×3 DataFrame
Row  species   MALE     FEMALE
     String15  Float64  Float64
_____________________________________
1    Adelie    4000.0    3400.0
2    Chinstrap 3950.0    3550.0
3    Gentoo    5500.0    -1
Julia로 하는 데이터 조작

피벗 테이블은 DataFrame입니다

# 피벗 테이블 저장
pivot_penguins = unstack(penguins_missing, :species, :sex, :body_mass_g, combine = median)

# 암컷 펭귄만 선택
select(pivot_penguins, :species, :FEMALE)
3×2 DataFrame
Row  species    FEMALE
     String15   Float64?
_______________________________
1    Adelie      3400.0
...
Julia로 하는 데이터 조작

연습해 봅시다!

Julia로 하는 데이터 조작

Preparing Video For Download...