Successfully reported this slideshow.
Your SlideShare is downloading. ×

Juliaで前処理

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Loading in …3
×

Check these out next

1 of 27 Ad
Advertisement

More Related Content

Advertisement

Similar to Juliaで前処理 (17)

Advertisement

Recently uploaded (20)

Juliaで前処理

  1. 1. 1 Julia.Tokyo #3 LT @weda_654 Julia で 前処理
  2. 2. 2 自己紹介 TwitterID : weda_654 所属 : GoogleMapとAWSとデータ分析の会社 業務 : データ分析(実力はお察し) 使用言語 : R(メイン), Python(たまに) こんなアイコンJuliaは0.4.0-devをつかってます
  3. 3. 注意事項 本資料は個人の意見・認識によるものです 所属する組織の意見・認識とは無関係です ご了承おねがいいたします
  4. 4. 4 2014年Rの前処理界隈に 新たなトレンドが生まれた…
  5. 5. 5 dplyr
  6. 6. 6 dplyrとは 速いデータ処理が可能になる %>%で処理をつないでいくことで可読性の向上も見込める データの選択・抽出・追加・集計を組み合わせ前処理ができる 要するに前処理が る! * %>%:チェイン演算子とよばれている
  7. 7. 7 dplyr実行例 iris2 <- iris[iris$Sepal.Length > 7.0, ] iris2[["SLM"]] <- mean(iris2$Sepal.Length) iris2 <- iris2[ , c("Sepal.Length", "Species", "SLM")] iris2 <- iris2[order(iris2$Sepal.Length), ] dplyr不使用 library(dplyr)を実行 iris2 <- iris %>% filter(Sepal.Length > 7.0) %>% mutate(SLM = mean(Sepal.Length)) %>% select(Sepal.Length, Species, SLM) %>% arrange(Sepal.Length)
  8. 8. 8 まったく、dplyrは最高だぜ!! dplyrない前処理なんて考えられない… Juliaでもできないかなぁー
  9. 9. 9 ……るよ…
  10. 10. 10 ん?
  11. 11. 11 …………できるよ…
  12. 12. 12 えっ?
  13. 13. 13 Juliaでもできるよっ!!
  14. 14. 14
  15. 15. 15 まじかよ…
  16. 16. 16 DataFramesMeta
  17. 17. 17 DataFramesMetaとは? DataFrame用のメタプログラミングツール DataFrameとは? • 数値や文字列などの異なるデータ型をまとめた2次元配列 DataFrameの操作に便利なマクロを備えている • JuliaでもDataFramesパッケージを導入すれば使える
  18. 18. 18 Julia dplyr LINQ 行の抽出 @where filter Where 列の追加 @transform mutate Select(?) グループ化+計算 @by Groupby グループ化 @groupby group_by 要約 @based_on summarise 並び替え @orderby arrange OderBy 列の選択 @select select Select dplyrとの対応表
  19. 19. 19 機能紹介 データの準備 using DataFrames, RDatasets, DataFramesMeta iris = dataset("datasets", "iris"); Pkg.add( DataFramesMeta") • Pkg.add()でDataFramesMetaパッケージを導入 • 今回はRDatasetsよりirisデータを用いる
  20. 20. 20 行の抽出 @where(iris, :SepalLength .> 7.0) 列の追加 @transform(iris, SLM = mean(:SepalLength)) グループ化+計算 @by(iris, :Species, SLmean = mean(:SepalLength)) 機能紹介
  21. 21. 21 並び替え @orderby(iris, -:SepalLength, :SepalWidth) 列の選択 @select(iris, :Species) 機能紹介
  22. 22. 22 処理をつなげる@linq iris2 = @linq iris ¦> @where(:SepalLength .> 7.0) ¦> @transform(SLM = mean(:SepalLength)) ¦> @select(:SepalLength, :SLM, :Species) ¦> @orderby(:SLM) • ¦>はdplyrにおける%>%と同じ.パイプの役割を持つ *¦>はデフォルトであるのでDataFramesMetaがなくても使える 機能紹介
  23. 23. 23 処理をつなげる@linq iris2 = @linq iris ¦> where(:SepalLength .> 7.0) ¦> transform(SLM = mean(:SepalLength)) ¦> select(:SepalLength, :SLM, :Species) ¦> orderby(:SepalLength) • @linqでつなげば@は不要になる 機能紹介
  24. 24. 24 機能紹介 処理をつなげる@linq(要約編) • @based_onがなぜかいうことをきかなかった… iris3 = @linq iris ¦> by(:Species, PLM = mean(:PetalLength)) ¦> transform(Rate = :PLM/sum(:PLM))
  25. 25. 25 さいごに DataFramesMeta歴1日?なのでまだまだ検証する必要がある • @linqのほかにも処理をつなげる方法がある(実行できない…) • DataFrame本来の操作との速度検証 •そもそもREADME最後まで読んでない… 作者曰くパフォーマンスをあげたりしたいとか… 今後に期待したい
  26. 26. 26 参考 DataFrames DataFramesMeta https://github.com/JuliaStats/DataFramesMeta.jl Macro Conflict with Lazy.jl https://github.com/JuliaStats/DataFramesMeta.jl/issues/12 https://github.com/JuliaStats/DataFrames.jl
  27. 27. 27 ご視聴ありがとうございました

×