데이터 정제

Julia 중급

Anthony Markham

Quantitative Developer

컬럼 정보 확인

  • 컬럼명은 데이터셋에서 가장 먼저 확인합니다.
  • 일반적으로 컬럼명은 읽기 쉽고 간결해야 합니다.
println(first(stock_data))
DataFrameRow
 Row | Date        Open     High     Low      Close    Adj Close  Volume
     | String15    Float64  Float64  Float64  Float64  Float64    Int64
<----|---------------------------------------------------------------------
   1 | 21/01/2022   164.42   166.33    162.3   162.41    161.473  122848900
Julia 중급

컬럼명 변경

  • 더 적절한 레이블이 있다고 판단되면 컬럼명을 변경할 수 있습니다.
 Row | Date        Open     High     Low      Close    Adj Close  Volume
     | String15    Float64  Float64  Float64  Float64  Float64    Int64
<----|---------------------------------------------------------------------
   1 | 21/01/2022   164.42   166.33    162.3   162.41    161.473  122848900
  • 여기서는 Adj Close에 공백이 있어 피하려고 합니다.
rename!(stock_data, Dict(:Adj Close => :Adj_Close))
 Row | Date        Open     High     Low      Close    Adj_Close  Volume
     | String15    Float64  Float64  Float64  Float64  Float64    Int64
<----|---------------------------------------------------------------------
   1 | 21/01/2022   164.42   166.33    162.3   162.41    161.473  122848900
Julia 중급

describe로 결측값 찾기

  • 결측값은 데이터 불일치의 흔한 원인입니다.
  • 결측 사유는 다양할 수 있습니다:

    • 측정 오류
    • 전사 오류
    • 의도적 누락
  • describe 메서드로 DataFrame의 결측을 빠르게 파악할 수 있습니다.

println(describe(stock_data))
Julia 중급

결측값 요약 확인

  • describe()는 전체 DataFrame의 개요를 제공합니다.
7×7 DataFrame
 Row | variable   mean       min        median     max        nmissing  eltype
     | Symbol     Union     Any          Union     Any        Int64     DataType
<--------------------------------------------------------------------------------
   1 | Date                  1/02/2022             9/12/2022         0  String15
   2 | Open       152.613    126.01     151.19     178.55            0  Float64
   3 | High       154.721    127.77     153.72     179.61            0  Float64
   4 | Low        150.529    124.17     149.34     176.7             0  Float64
   5 | Close      152.698    125.02     151.21     178.96            4  Union
   6 | Adj_Close  152.296    125.02     151.07     178.154           0  Float64
   7 | Volume     8.70851e7  35195900   8.22912e7  182602000         0  Int64
Julia 중급

결측값 제거

  • dropmissing으로 결측 행을 제거할 수 있습니다.
println(nrow(stock_data))
252
dropmissing!(stock_data, :"Close")
  • nrow()를 다시 사용해 4행이 제거되었는지 확인합니다.
println(nrow(stock_data))
248
Julia 중급

결측값 대체

  • 결측값이 있다고 해서 행을 단순 삭제하는 것은 보통 적절하지 않습니다.
  • 데이터에 따라 결측값을 다른 값으로 대체할 수 있습니다.
replace!(stock_data[!, "Close"], missing => 130)
println(stock_data[[202, 227, 235, 240], :])
 Row | Date        Open     High     Low      Close     Adj Close  Volume
     | String15    Float64  Float64  Float64  Float64?  Float64    Int64
<----|-----------------------------------------------------------------------
   1 | 8/11/2022    140.41   141.43   137.49    130      139.5    89908500
   2 | 14/12/2022   145.35   146.66   141.16    130      143.21   82291200
   3 | 25/12/2022   130.92   132.42   129.64    130      131.86   63814900
   4 | 3/01/2023    130.28   130.9    124.17    130      125.07  112117500
  • 임의의 값으로 대체하는 방식은 대부분 올바르지 않습니다.
Julia 중급

Passons à la pratique !

Julia 중급

Preparing Video For Download...