効率的なワークフロー

Julia でのデータ操作

Katerina Zahradova

Instructor

命名のヒント

  • 短く意味のある名前
    • df より wages
    • us_min_wages_data_between_1968_and_2020_with_inflation_adjusted_column より wages
  • 命名規則/パターンに従う
    • state_wage_2020effective.2020.dollars の混在は覚えにくい
    • 大文字小文字も統一。stateYearREGION を同一 DataFrame に混在させない
Julia でのデータ操作

変数が多すぎる

  • 新しい変数を増やしすぎない

    • メモリを圧迫
    • 混乱のもと:wages_no_missingwages_missing_state_onlywages_original_no_missingwages_state_mean_no_missing などの違いが不明確
  • 上書きする。select!()transform!() などを使用

  • 同一データの新バージョンを減らすため chain マクロを使う
Julia でのデータ操作

ハードコーディングより変数を

  • 定数の直書きより変数を使う
# 推奨
replace_missing = 0

replace!(df.col1, missing => replace_missing)
replace!(df.col2, missing => replace_missing)

# 非推奨
replace!(df.col1, missing => 0)
replace!(df.col2, missing => 0)
Julia でのデータ操作

関数化しよう

  • 同じ処理を繰り返すより関数化
    • 関数でタイプミス防止
    • 一度用意すれば素早く再利用
# ラベル付きの複数折れ線を描く関数
function make_line_plot(xs, ys,labels; xlabel="", ylabel="", title="")
    p = plot(title = title, xlabel = xlabel, ylabel = ylabel)
    for (x, y, label) in zip(xs, ys, labels)
        plot!(x, y, label=label)
    end
    p
end
Julia でのデータ操作

コメントとドキュメント化

  • 何をしているかをコメントに書く
# 名前を標準化
rename!(df, :ColumnOne => :col_1)

# company が欠損の行
df[ismissing.(df.company),:]

# year と state でピボット
unstack(wages, :year, :state, :eff_min_wage)
  • なぜ行うかも記録する
# 欠損の賃金は最小値で補完
# 最悪ケースとして
min = minimum(skipmissing(df.wages))
replace!(df.wages, missing => min)

# 国データと結合
# 国が品質に与える影響を調べるため
leftjoin(company, countries, on=:location)
Julia でのデータ操作

データを把握する

  • まずデータを理解する時間を取る
    • 後で情報抽出が楽になる
    • 可視化や出力で確認

データを知ろう

1 Photo by Myriam Jessier on Unsplash
Julia でのデータ操作

助けを求めよう

Google、Stack Overflow、DataCamp のロゴ

Julia でのデータ操作

楽しもう!

  • 楽しみ、諦めず、前向きに!
Julia でのデータ操作

米国空港の遅延

フライトデータの構造

Julia でのデータ操作

Let's practice!

Julia でのデータ操作

Preparing Video For Download...