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

More Related Content

What's hot

プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造
Takuya Akiba
 
Rで階層ベイズモデル
Rで階層ベイズモデルRで階層ベイズモデル
Rで階層ベイズモデル
Yohei Sato
 
プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法
Takuya Akiba
 
第五回統計学勉強会@東大駒場
第五回統計学勉強会@東大駒場第五回統計学勉強会@東大駒場
第五回統計学勉強会@東大駒場
Daisuke Yoneoka
 

What's hot (20)

文献調査をどのように行うべきか?
文献調査をどのように行うべきか?文献調査をどのように行うべきか?
文献調査をどのように行うべきか?
 
論文の図表レイアウト例
論文の図表レイアウト例論文の図表レイアウト例
論文の図表レイアウト例
 
プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造
 
Stanコードの書き方 中級編
Stanコードの書き方 中級編Stanコードの書き方 中級編
Stanコードの書き方 中級編
 
ブースティング入門
ブースティング入門ブースティング入門
ブースティング入門
 
Rで階層ベイズモデル
Rで階層ベイズモデルRで階層ベイズモデル
Rで階層ベイズモデル
 
スパース推定法による統計モデリング(入門)
スパース推定法による統計モデリング(入門)スパース推定法による統計モデリング(入門)
スパース推定法による統計モデリング(入門)
 
Shiny-Serverあれこれ
Shiny-ServerあれこれShiny-Serverあれこれ
Shiny-Serverあれこれ
 
AHC-Lab M1勉強会 論文の読み方・書き方
AHC-Lab M1勉強会 論文の読み方・書き方AHC-Lab M1勉強会 論文の読み方・書き方
AHC-Lab M1勉強会 論文の読み方・書き方
 
(第3版)「知能の構成的解明の研究動向と今後の展望」についての個人的見解:Chain of thought promptingやpostdictionを中...
(第3版)「知能の構成的解明の研究動向と今後の展望」についての個人的見解:Chain of thought promptingやpostdictionを中...(第3版)「知能の構成的解明の研究動向と今後の展望」についての個人的見解:Chain of thought promptingやpostdictionを中...
(第3版)「知能の構成的解明の研究動向と今後の展望」についての個人的見解:Chain of thought promptingやpostdictionを中...
 
プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法
 
潜在ディリクレ配分法
潜在ディリクレ配分法潜在ディリクレ配分法
潜在ディリクレ配分法
 
RでGPU使ってみた
RでGPU使ってみたRでGPU使ってみた
RでGPU使ってみた
 
第五回統計学勉強会@東大駒場
第五回統計学勉強会@東大駒場第五回統計学勉強会@東大駒場
第五回統計学勉強会@東大駒場
 
すごい配列楽しく学ぼう
すごい配列楽しく学ぼうすごい配列楽しく学ぼう
すごい配列楽しく学ぼう
 
[DL輪読会]World Models
[DL輪読会]World Models[DL輪読会]World Models
[DL輪読会]World Models
 
【DL輪読会】SimCSE: Simple Contrastive Learning of Sentence Embeddings (EMNLP 2021)
【DL輪読会】SimCSE: Simple Contrastive Learning of Sentence Embeddings  (EMNLP 2021)【DL輪読会】SimCSE: Simple Contrastive Learning of Sentence Embeddings  (EMNLP 2021)
【DL輪読会】SimCSE: Simple Contrastive Learning of Sentence Embeddings (EMNLP 2021)
 
因果探索: 基本から最近の発展までを概説
因果探索: 基本から最近の発展までを概説因果探索: 基本から最近の発展までを概説
因果探索: 基本から最近の発展までを概説
 
Rの高速化
Rの高速化Rの高速化
Rの高速化
 
PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築
PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築
PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築
 

Viewers also liked

わかりやすいパターン認識_2章
わかりやすいパターン認識_2章わかりやすいパターン認識_2章
わかりやすいパターン認識_2章
weda654
 
Apache CloudStack コントリビューション
Apache CloudStack コントリビューションApache CloudStack コントリビューション
Apache CloudStack コントリビューション
Satoshi KOBAYASHI
 
はじパタ2章
はじパタ2章はじパタ2章
はじパタ2章
tetsuro ito
 
はじパタ6章前半
はじパタ6章前半はじパタ6章前半
はじパタ6章前半
T T
 
第10章後半「ブースティングと加法的木」
第10章後半「ブースティングと加法的木」第10章後半「ブースティングと加法的木」
第10章後半「ブースティングと加法的木」
T T
 

Viewers also liked (20)

わかりやすいパターン認識_3章
わかりやすいパターン認識_3章わかりやすいパターン認識_3章
わかりやすいパターン認識_3章
 
わかりやすいパターン認識_2章
わかりやすいパターン認識_2章わかりやすいパターン認識_2章
わかりやすいパターン認識_2章
 
SDN Framework Ryu Internal
SDN Framework Ryu InternalSDN Framework Ryu Internal
SDN Framework Ryu Internal
 
現在のDNNにおける未解決問題
現在のDNNにおける未解決問題現在のDNNにおける未解決問題
現在のDNNにおける未解決問題
 
OpenFlow OAM ツール - OKINAWA Open Days 2014 Day1
OpenFlow OAM ツール - OKINAWA Open Days 2014 Day1OpenFlow OAM ツール - OKINAWA Open Days 2014 Day1
OpenFlow OAM ツール - OKINAWA Open Days 2014 Day1
 
Apache CloudStack コントリビューション
Apache CloudStack コントリビューションApache CloudStack コントリビューション
Apache CloudStack コントリビューション
 
はじパタ2章
はじパタ2章はじパタ2章
はじパタ2章
 
わかパタ 1章
わかパタ 1章わかパタ 1章
わかパタ 1章
 
第一回ぞくパタ
第一回ぞくパタ第一回ぞくパタ
第一回ぞくパタ
 
はじパタ6章前半
はじパタ6章前半はじパタ6章前半
はじパタ6章前半
 
第10章後半「ブースティングと加法的木」
第10章後半「ブースティングと加法的木」第10章後半「ブースティングと加法的木」
第10章後半「ブースティングと加法的木」
 
Digipak so far
Digipak so farDigipak so far
Digipak so far
 
Creating a Professional LinkedIn Profile
Creating a Professional LinkedIn ProfileCreating a Professional LinkedIn Profile
Creating a Professional LinkedIn Profile
 
Htmlslicemate Review
Htmlslicemate ReviewHtmlslicemate Review
Htmlslicemate Review
 
20140204はじパタlt
20140204はじパタlt20140204はじパタlt
20140204はじパタlt
 
Sappo ro#6資料2 ー完全版ー
Sappo ro#6資料2 ー完全版ーSappo ro#6資料2 ー完全版ー
Sappo ro#6資料2 ー完全版ー
 
Um ato amoroso
Um ato amorosoUm ato amoroso
Um ato amoroso
 
Internal vs. External CEOs
Internal vs. External CEOsInternal vs. External CEOs
Internal vs. External CEOs
 
0727 cvpr16 asp_vision_upload
0727 cvpr16 asp_vision_upload0727 cvpr16 asp_vision_upload
0727 cvpr16 asp_vision_upload
 
20130716 はじパタ3章前半 ベイズの識別規則
20130716 はじパタ3章前半 ベイズの識別規則20130716 はじパタ3章前半 ベイズの識別規則
20130716 はじパタ3章前半 ベイズの識別規則
 

Similar to Juliaで前処理

ビッグデータ活用支援フォーラム
ビッグデータ活用支援フォーラムビッグデータ活用支援フォーラム
ビッグデータ活用支援フォーラム
Recruit Technologies
 

Similar to Juliaで前処理 (20)

Tokyo r80 beginnerssession1
Tokyo r80 beginnerssession1Tokyo r80 beginnerssession1
Tokyo r80 beginnerssession1
 
TokyoR79 beginnerssession1
TokyoR79 beginnerssession1TokyoR79 beginnerssession1
TokyoR79 beginnerssession1
 
dplyrとは何だったのか
dplyrとは何だったのかdplyrとは何だったのか
dplyrとは何だったのか
 
Hadoopカンファレンス2013
Hadoopカンファレンス2013Hadoopカンファレンス2013
Hadoopカンファレンス2013
 
Juliaを使った機械学習
Juliaを使った機械学習Juliaを使った機械学習
Juliaを使った機械学習
 
Hadoop上の多種多様な処理でPigの活きる道 (Hadoop Conferecne Japan 2013 Winter)
Hadoop上の多種多様な処理でPigの活きる道 (Hadoop Conferecne Japan 2013 Winter)Hadoop上の多種多様な処理でPigの活きる道 (Hadoop Conferecne Japan 2013 Winter)
Hadoop上の多種多様な処理でPigの活きる道 (Hadoop Conferecne Japan 2013 Winter)
 
データプランナーによるデータ系施策について
データプランナーによるデータ系施策についてデータプランナーによるデータ系施策について
データプランナーによるデータ系施策について
 
TokyoR101_BeginnersSession2.pdf
TokyoR101_BeginnersSession2.pdfTokyoR101_BeginnersSession2.pdf
TokyoR101_BeginnersSession2.pdf
 
TokyoR101_BeginnersSession1.pdf
TokyoR101_BeginnersSession1.pdfTokyoR101_BeginnersSession1.pdf
TokyoR101_BeginnersSession1.pdf
 
ディープラーニング最近の発展とビジネス応用への課題
ディープラーニング最近の発展とビジネス応用への課題ディープラーニング最近の発展とビジネス応用への課題
ディープラーニング最近の発展とビジネス応用への課題
 
ビッグデータ活用支援フォーラム
ビッグデータ活用支援フォーラムビッグデータ活用支援フォーラム
ビッグデータ活用支援フォーラム
 
Postgre sqlから見るnosql
Postgre sqlから見るnosqlPostgre sqlから見るnosql
Postgre sqlから見るnosql
 
Padocview anonimous2
Padocview anonimous2Padocview anonimous2
Padocview anonimous2
 
プロトタイプで終わらせない死の谷を超える機械学習プロジェクトの進め方 #MLCT4
プロトタイプで終わらせない死の谷を超える機械学習プロジェクトの進め方 #MLCT4プロトタイプで終わらせない死の谷を超える機械学習プロジェクトの進め方 #MLCT4
プロトタイプで終わらせない死の谷を超える機械学習プロジェクトの進め方 #MLCT4
 
Rとpythonとjuliaで機械学習レベル4を目指す
Rとpythonとjuliaで機械学習レベル4を目指すRとpythonとjuliaで機械学習レベル4を目指す
Rとpythonとjuliaで機械学習レベル4を目指す
 
20181206 Jazug DataScience TeamBuilding and DevOps
20181206 Jazug DataScience TeamBuilding and DevOps20181206 Jazug DataScience TeamBuilding and DevOps
20181206 Jazug DataScience TeamBuilding and DevOps
 
ビッグデータ&データマネジメント展
ビッグデータ&データマネジメント展ビッグデータ&データマネジメント展
ビッグデータ&データマネジメント展
 
続・わかりやすいパターン認識_3章
続・わかりやすいパターン認識_3章続・わかりやすいパターン認識_3章
続・わかりやすいパターン認識_3章
 
Rubyの会社でPythonistaが3ヶ月生き延びた話
Rubyの会社でPythonistaが3ヶ月生き延びた話Rubyの会社でPythonistaが3ヶ月生き延びた話
Rubyの会社でPythonistaが3ヶ月生き延びた話
 
Rubyの会社でPythonistaが三ヶ月生き延びた話
Rubyの会社でPythonistaが三ヶ月生き延びた話Rubyの会社でPythonistaが三ヶ月生き延びた話
Rubyの会社でPythonistaが三ヶ月生き延びた話
 

Juliaで前処理