裏 RjpWiki

Julia ときどき R, Python によるコンピュータプログラム,コンピュータ・サイエンス,統計学

データ処理の前処理って...

2021年02月12日 | ブログラミング

https://archive.ics.uci.edu/ml/datasets/water+treatment+plant
にある,water-treatment.data を読んで,データの様子を見る,というところまでやってみるというのを,
Julia だったらこうやるというところで...

using CSV, DataFrames

ヘッダーがないので,header=false を指定する。
欠損値は "?" ではいっているので,missingstring="?" とする。
日付データが dateformat="D-dd/mm/yy" の形で入っている(読み込んだ後は,年は 0090 とかになる。本当は 1990 年なんだろうけど),

df = CSV.read("water-treatment.data", DataFrame, header=false, missingstring="?", dateformat="D-dd/mm/yy");

先頭を見てみる。

first(df, 5)

5 rows × 39 columns (omitted printing of 30 columns)

Column1 Column2 Column3 Column4 Column5 Column6 Column7 Column8 Column9
Date… Int64? Float64? Float64 Int64? Int64? Int64? Float64? Float64?
1 0090-03-01 44101 1.5 7.8 missing 407 166 66.3 4.5
2 0090-03-02 39024 3.0 7.7 missing 443 214 69.2 6.5
3 0090-03-04 32229 5.0 7.6 missing 528 186 69.9 3.4
4 0090-03-05 35023 3.5 7.9 205 588 192 65.6 4.5
5 0090-03-06 36924 1.5 8.0 242 496 176 64.8 4.0


行数,列数を確認する。

size(df) # (527, 39)

第1列目(日付)でソートする(df は直接書き換えられるので,代入しなくてよい)。

sort!(df, :Column1)

527 rows × 39 columns (omitted printing of 30 columns)

先頭を見てみる。

first(df, 5)

Column1 Column2 Column3 Column4 Column5 Column6 Column7 Column8 Column9
Date… Int64? Float64? Float64 Int64? Int64? Int64? Float64? Float64?
1 0090-01-01 41230 0.35 7.6 120 344 136 54.4 4.5
2 0090-01-02 37386 1.4 7.9 165 470 170 76.5 4.0
3 0090-01-03 34535 1.0 7.8 232 518 220 65.5 5.5
4 0090-01-04 32527 3.0 7.8 187 460 180 67.8 5.2
5 0090-01-07 27760 1.2 7.6 199 466 186 74.2 4.5

using Plots

データが取られている日付の間隔をみるのだが,間隔は diff() だけで求まる。それをヒストグラムで表す。

histogram(diff(df[:, 1]))

縦軸を対数表示にしたいということなので,yaxis=:log を指定する。

histogram(diff(df[:, 1]), yaxis=:log)

各項目(各列)で欠損値がどれくらいあるかということで,まずは,項目名と欠損値率を表示する。

hcat(names(df), describe(df)[:, :nmissing] ./ size(df,1))

39×2 Array{Any,2}:
 "Column1"   0.0
 "Column2"   0.0341556
 "Column3"   0.0056926
 "Column4"   0.0
 "Column5"   0.0436433
 ⋮           
 "Column38"  0.0151803
 "Column39"  0.0588235

棒グラフで見てもよいが。

bar(describe(df)[:, :nmissing] ./ size(df,1))

コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« Julia のグラフで添え字など... | トップ | Julia と R で整数演算の違い »
最新の画像もっと見る

コメントを投稿

ブログラミング」カテゴリの最新記事