Suche senden
Hochladen
data.tableパッケージで大規模データをサクッと処理する
•
35 gefällt mir
•
18,320 views
S
Shintaro Fukushima
Folgen
Melden
Teilen
Melden
Teilen
1 von 27
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
Rデータフレーム自由自在
Rデータフレーム自由自在
Takeshi Arabiki
Rの高速化
Rの高速化
弘毅 露崎
R高速化
R高速化
Monta Yashi
5分でわかるかもしれないglmnet
5分でわかるかもしれないglmnet
Nagi Teramo
Rで学ぶ回帰分析と単位根検定
Rで学ぶ回帰分析と単位根検定
Nagi Teramo
【読書会資料】『StanとRでベイズ統計モデリング』Chapter12:時間や空間を扱うモデル
【読書会資料】『StanとRでベイズ統計モデリング』Chapter12:時間や空間を扱うモデル
Masashi Komori
Visual Studio CodeでRを使う
Visual Studio CodeでRを使う
Atsushi Hayakawa
RとSQLiteで気軽にデータベース作成
RとSQLiteで気軽にデータベース作成
弘毅 露崎
Weitere ähnliche Inhalte
Was ist angesagt?
ベイジアンモデリングによるマーケティングサイエンス〜状態空間モデルを用いたモデリング
ベイジアンモデリングによるマーケティングサイエンス〜状態空間モデルを用いたモデリング
宏喜 佐野
Cmdstanr入門とreduce_sum()解説
Cmdstanr入門とreduce_sum()解説
Hiroshi Shimizu
ggplot2をつかってみよう
ggplot2をつかってみよう
Hiroki Itô
Stanコードの書き方 中級編
Stanコードの書き方 中級編
Hiroshi Shimizu
Rにおける大規模データ解析(第10回TokyoWebMining)
Rにおける大規模データ解析(第10回TokyoWebMining)
Shintaro Fukushima
Rで階層ベイズモデル
Rで階層ベイズモデル
Yohei Sato
Rで架空データの発生
Rで架空データの発生
Makoto Hirakawa
データベース01 - データベースとは
データベース01 - データベースとは
Kenta Oku
Rによる高速処理 まだfor使ってるの?
Rによる高速処理 まだfor使ってるの?
jundoll
Overleafを使った文書作成
Overleafを使った文書作成
Yoshihiro Mizoguchi
Prophet入門【Python編】Facebookの時系列予測ツール
Prophet入門【Python編】Facebookの時系列予測ツール
hoxo_m
Nagoya.R #15 順位相関係数の信頼区間の算出
Nagoya.R #15 順位相関係数の信頼区間の算出
Yusaku Kawaguchi
for関数を使った繰り返し処理によるヒストグラムの一括出力
for関数を使った繰り返し処理によるヒストグラムの一括出力
imuyaoti
大量時空間データの処理 ~ 現状の課題と今後OSSが解決すべきこと。(Open Source Conference 2021 Online/Osaka講演資料)
大量時空間データの処理 ~ 現状の課題と今後OSSが解決すべきこと。(Open Source Conference 2021 Online/Osaka講演資料)
NTT DATA Technology & Innovation
ggplotのplotエリアで日本語ラベルを使う
ggplotのplotエリアで日本語ラベルを使う
Tsuda University Institute for Mathematics and Computer Science
NagoyaStat#7 StanとRでベイズ統計モデリング(アヒル本)4章の発表資料
NagoyaStat#7 StanとRでベイズ統計モデリング(アヒル本)4章の発表資料
nishioka1
関数データ解析の概要とその方法
関数データ解析の概要とその方法
Hidetoshi Matsui
Feature Selection with R / in JP
Feature Selection with R / in JP
Sercan Ahi
PyCon2020 Pythonで競プロをしよう! 〜入門者が知っておくべき高速化Tips〜
PyCon2020 Pythonで競プロをしよう! 〜入門者が知っておくべき高速化Tips〜
Kosaku Ono
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
Takahiro Inoue
Was ist angesagt?
(20)
ベイジアンモデリングによるマーケティングサイエンス〜状態空間モデルを用いたモデリング
ベイジアンモデリングによるマーケティングサイエンス〜状態空間モデルを用いたモデリング
Cmdstanr入門とreduce_sum()解説
Cmdstanr入門とreduce_sum()解説
ggplot2をつかってみよう
ggplot2をつかってみよう
Stanコードの書き方 中級編
Stanコードの書き方 中級編
Rにおける大規模データ解析(第10回TokyoWebMining)
Rにおける大規模データ解析(第10回TokyoWebMining)
Rで階層ベイズモデル
Rで階層ベイズモデル
Rで架空データの発生
Rで架空データの発生
データベース01 - データベースとは
データベース01 - データベースとは
Rによる高速処理 まだfor使ってるの?
Rによる高速処理 まだfor使ってるの?
Overleafを使った文書作成
Overleafを使った文書作成
Prophet入門【Python編】Facebookの時系列予測ツール
Prophet入門【Python編】Facebookの時系列予測ツール
Nagoya.R #15 順位相関係数の信頼区間の算出
Nagoya.R #15 順位相関係数の信頼区間の算出
for関数を使った繰り返し処理によるヒストグラムの一括出力
for関数を使った繰り返し処理によるヒストグラムの一括出力
大量時空間データの処理 ~ 現状の課題と今後OSSが解決すべきこと。(Open Source Conference 2021 Online/Osaka講演資料)
大量時空間データの処理 ~ 現状の課題と今後OSSが解決すべきこと。(Open Source Conference 2021 Online/Osaka講演資料)
ggplotのplotエリアで日本語ラベルを使う
ggplotのplotエリアで日本語ラベルを使う
NagoyaStat#7 StanとRでベイズ統計モデリング(アヒル本)4章の発表資料
NagoyaStat#7 StanとRでベイズ統計モデリング(アヒル本)4章の発表資料
関数データ解析の概要とその方法
関数データ解析の概要とその方法
Feature Selection with R / in JP
Feature Selection with R / in JP
PyCon2020 Pythonで競プロをしよう! 〜入門者が知っておくべき高速化Tips〜
PyCon2020 Pythonで競プロをしよう! 〜入門者が知っておくべき高速化Tips〜
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
Andere mochten auch
巨大な表を高速に扱うData.table について
巨大な表を高速に扱うData.table について
Haruka Ozaki
VLDB2013 Session 1 Emerging Hardware
VLDB2013 Session 1 Emerging Hardware
Takuma Wakamori
ICDE2015 Research 3: Distributed Storage and Processing
ICDE2015 Research 3: Distributed Storage and Processing
Takuma Wakamori
ICDE2014 Session 14 Data Warehousing
ICDE2014 Session 14 Data Warehousing
Takuma Wakamori
「数字を見せろ」から「コードを見せろ」へ 〜過程の透明性を確保したデータ可視化を目指す〜
「数字を見せろ」から「コードを見せろ」へ 〜過程の透明性を確保したデータ可視化を目指す〜
Keiichiro Ono
遅延価値観数と階層ベイズを用いた男心をくすぐる女の戦略.R
遅延価値観数と階層ベイズを用いた男心をくすぐる女の戦略.R
MrUnadon
RではじめるTwitter解析
RではじめるTwitter解析
Takeshi Arabiki
Andere mochten auch
(7)
巨大な表を高速に扱うData.table について
巨大な表を高速に扱うData.table について
VLDB2013 Session 1 Emerging Hardware
VLDB2013 Session 1 Emerging Hardware
ICDE2015 Research 3: Distributed Storage and Processing
ICDE2015 Research 3: Distributed Storage and Processing
ICDE2014 Session 14 Data Warehousing
ICDE2014 Session 14 Data Warehousing
「数字を見せろ」から「コードを見せろ」へ 〜過程の透明性を確保したデータ可視化を目指す〜
「数字を見せろ」から「コードを見せろ」へ 〜過程の透明性を確保したデータ可視化を目指す〜
遅延価値観数と階層ベイズを用いた男心をくすぐる女の戦略.R
遅延価値観数と階層ベイズを用いた男心をくすぐる女の戦略.R
RではじめるTwitter解析
RではじめるTwitter解析
Mehr von Shintaro Fukushima
20230216_Python機械学習プログラミング.pdf
20230216_Python機械学習プログラミング.pdf
Shintaro Fukushima
機械学習品質管理・保証の動向と取り組み
機械学習品質管理・保証の動向と取り組み
Shintaro Fukushima
Materials Informatics and Python
Materials Informatics and Python
Shintaro Fukushima
BPstudy sklearn 20180925
BPstudy sklearn 20180925
Shintaro Fukushima
最近のRのランダムフォレストパッケージ -ranger/Rborist-
最近のRのランダムフォレストパッケージ -ranger/Rborist-
Shintaro Fukushima
Why dont you_create_new_spark_jl
Why dont you_create_new_spark_jl
Shintaro Fukushima
Rユーザのためのspark入門
Rユーザのためのspark入門
Shintaro Fukushima
Juliaによる予測モデル構築・評価
Juliaによる予測モデル構築・評価
Shintaro Fukushima
Juliaで並列計算
Juliaで並列計算
Shintaro Fukushima
機械学習を用いた予測モデル構築・評価
機械学習を用いた予測モデル構築・評価
Shintaro Fukushima
データサイエンスワールドからC++を眺めてみる
データサイエンスワールドからC++を眺めてみる
Shintaro Fukushima
アクションマイニングを用いた最適なアクションの導出
アクションマイニングを用いた最適なアクションの導出
Shintaro Fukushima
R3.0.0 is relased
R3.0.0 is relased
Shintaro Fukushima
外れ値
外れ値
Shintaro Fukushima
Rでreproducible research
Rでreproducible research
Shintaro Fukushima
統計解析言語Rにおける大規模データ管理のためのboost.interprocessの活用
統計解析言語Rにおける大規模データ管理のためのboost.interprocessの活用
Shintaro Fukushima
不均衡データのクラス分類
不均衡データのクラス分類
Shintaro Fukushima
mmapパッケージを使ってお手軽オブジェクト管理
mmapパッケージを使ってお手軽オブジェクト管理
Shintaro Fukushima
Numpy scipyで独立成分分析
Numpy scipyで独立成分分析
Shintaro Fukushima
Rで学ぶロバスト推定
Rで学ぶロバスト推定
Shintaro Fukushima
Mehr von Shintaro Fukushima
(20)
20230216_Python機械学習プログラミング.pdf
20230216_Python機械学習プログラミング.pdf
機械学習品質管理・保証の動向と取り組み
機械学習品質管理・保証の動向と取り組み
Materials Informatics and Python
Materials Informatics and Python
BPstudy sklearn 20180925
BPstudy sklearn 20180925
最近のRのランダムフォレストパッケージ -ranger/Rborist-
最近のRのランダムフォレストパッケージ -ranger/Rborist-
Why dont you_create_new_spark_jl
Why dont you_create_new_spark_jl
Rユーザのためのspark入門
Rユーザのためのspark入門
Juliaによる予測モデル構築・評価
Juliaによる予測モデル構築・評価
Juliaで並列計算
Juliaで並列計算
機械学習を用いた予測モデル構築・評価
機械学習を用いた予測モデル構築・評価
データサイエンスワールドからC++を眺めてみる
データサイエンスワールドからC++を眺めてみる
アクションマイニングを用いた最適なアクションの導出
アクションマイニングを用いた最適なアクションの導出
R3.0.0 is relased
R3.0.0 is relased
外れ値
外れ値
Rでreproducible research
Rでreproducible research
統計解析言語Rにおける大規模データ管理のためのboost.interprocessの活用
統計解析言語Rにおける大規模データ管理のためのboost.interprocessの活用
不均衡データのクラス分類
不均衡データのクラス分類
mmapパッケージを使ってお手軽オブジェクト管理
mmapパッケージを使ってお手軽オブジェクト管理
Numpy scipyで独立成分分析
Numpy scipyで独立成分分析
Rで学ぶロバスト推定
Rで学ぶロバスト推定
data.tableパッケージで大規模データをサクッと処理する
1.
data.tableパッケージで ⼤規模データをサクッと処理する 2013年11⽉9⽇ 第35回Tokyo.R @sfchaos
2.
⾃⼰紹介 � TwitterID:@sfchaos � お仕事:データマイニング 1
3.
1. イントロダクション 2
4.
データフレームは, Rの最重要なデータ構造の⼀つ データフレームとは, Excelのワークシートのような ⾏列形式のデータ構造 3
5.
例えば, いつもよく出てくるirisデータセット > head(iris) Sepal.Length Sepal.Width
Petal.Length Petal.Width Species 1 5.1 3.5 1.4 0.2 setosa 2 4.9 3.0 1.4 0.2 setosa 3 4.7 3.2 1.3 0.2 setosa 4 4.6 3.1 1.5 0.2 setosa 5 5.0 3.6 1.4 0.2 setosa 6 5.4 3.9 1.7 0.4 setosa アヤメの茎の⻑さ・幅と種類に関するデータ 4
6.
reshape2パッケージ, plyrパッケージなどを⽤いることにより, ピボットテーブルなどの柔軟な処理も可能 5
7.
天下のExcel様も gkbrのデータフレーム!! with data.frame 6
8.
そんなデータフレームも, 結構処理が遅いことがある > # データの読み込み >
system.time(usc.df <read.csv("../data/USCensus1990.data.txt")) ユーザ システム 経過 65.588 3.152 68.868 ⽶国の1990年の国勢調査データ 出典:US Census(1990) Data Set http://archive.ics.uci.edu/ml/datasets/US +Census+Data+%281990%29 7
9.
こんなとき,data.tableパッケージが 役⽴つかもしれない > library(data.table) data.table 1.8.10
For help type: help("data.table") > system.time(usc.dt <fread("../data/USCensus1990.data.txt")) ユーザ システム 経過 3.244 0.040 3.300 出典:http://cran.r-project.org/web/packages/data.table/index.html 8
10.
data.tableパッケージを⽤いることにより, 以下のような処理を⾼速に実現 � � � � データの読み込み 条件に合致した要素の抽出 層別の集計 テーブルのジョイン 等 9
11.
2. data.tableパッケージひとめぐり 10
12.
データ分析の流れ 外部からデータを 読み込むケース データ データの ⼊⼒ データ 加⼯・集計 マイニング 結果の 出⼒ 結果 データの ⽣成 データを⽣成するケース data.tableパッケージの 守備範囲 11
13.
各⼯程の処理例とdata.tableの関数 ⼯程 データの⼊⼒・変換 処理 データの読み込み data.tableの関数 �fread 通常のRの関数 �read.csv/read.table �scan 等 データフレームからのデータ 変換 データの加⼯・集計 �data.table キーの付加 �setkey -- グループ化の処理 �添字表記[[]], by引数 -- テーブルのジョイン �merge �merge 複数のリストの結合 �rbindlst �do.call("rbind",
リスト) -- �do.call("cbind", リスト) 部分集合の取り出し �subset �subset ⾏の重複のチェック �duplicated �duplicated ※data.tableパッケージについては, 他にも様々な関数がある 12
14.
データの⼊⼒ � データ読み込み(fread関数を使⽤) > library(data.table) data.table
1.8.10 For help type: help("data.table") > system.time(usc.dt <fread("../data/USCensus1990.data.txt")) ユーザ システム 経過 3.244 0.040 3.300 13
15.
データの⼊⼒ � ⽐較)データ読み込み(通常のread.csv関数) > #
データの読み込み > system.time(usc.df <read.csv("../data/USCensus1990.data.txt")) ユーザ システム 経過 65.588 3.152 68.868 fread関数を⽤いることで20倍以上の⾼速化 14
16.
データの⼊⼒ � 読み込んだデータテーブルの確認(⾏頭・⾏末) > head(usc.dt) caseid
dAge dAncstry1 dAncstry2 iAvail iCitizen iClass dDepart ... 1: 10000 5 0 1 0 0 5 3 ... 2: 10001 6 1 1 0 0 7 5 ... 3: 10002 3 1 2 0 0 7 4 ... 4: 10003 4 1 2 0 0 1 3 ... 5: 10004 7 1 1 0 0 0 0 ... 6: 10005 1 1 2 0 0 0 0 ... > tail(usc.dt) caseid dAge dAncstry1 dAncstry2 iAvail iCitizen iClass dDepart ... 1: 2468279 3 3 1 0 0 1 5 ... 2: 2468280 7 1 2 0 0 0 0 ... 3: 2468281 1 1 2 0 0 0 0 ... 4: 2468282 3 3 1 0 0 1 2 ... 5: 2468283 6 0 1 0 0 1 3 ... 6: 2468284 2 3 1 0 4 0 0 ... 15
17.
データの⼊⼒ � 読み込んだデータテーブルの確認(サイズ,表頭・表側) > dim(usc.dt) [1]
2458285 69 > dimnames(usc.dt) [[1]] NULL [[2]] [1] "caseid" [7] "iClass" [13] "iFertil" [19] "dIncome2" [25] "dIncome8" [31] "iMay75880" [37] "iOthrserv" [43] "dRearning" [49] "iRownchld" [55] "iSchool" [61] "dTravtime" [67] "iYearsch" "dAge" "dDepart" "dHispanic" "dIncome3" "dIndustry" "iMeans" "iPerscare" "iRelat1" "dRpincome" "iSept80" "iVietnam" "iYearwrk" 表側はつかない "dAncstry1" "iDisabl1" "dHour89" "dIncome4" "iKorean" "iMilitary" "dPOB" "iRelat2" "iRPOB" "iSex" "dWeek89" "dYrsserv" "dAncstry2" "iDisabl2" "dHours" "dIncome5" "iLang1" "iMobility" "dPoverty" "iRemplpar" "iRrelchld" "iSubfam1" "iWork89" "iAvail" "iEnglish" "iImmigr" "dIncome6" "iLooking" "iMobillim" "dPwgt1" "iRiders" "iRspouse" "iSubfam2" "iWorklwk" "iCitizen" "iFeb55" "dIncome1" "dIncome7" "iMarital" "dOccup" "iRagechld" "iRlabor" "iRvetserv" "iTmpabsnt" "iWWII" 16
18.
データの⼊⼒ � メモリ上に⽣成されたデータテーブルのリストの確認 オブジェクト名 > tables() NAME NROW
MB [1,] usc.dt 2,458,285 648 ⾏数 COLS [1,] caseid,dAge,dAncstry1,dAncstry2,iAvail,iCitizen,iClass, dDepart,iDisabl1,iDisabl2 KEY [1,] 表側(の⼀部) Total: 648MB 17
19.
データの変換 � データフレームからデータテーブルへの変換(data.table関数) > system.time(usc.dt
<- data.table(usc.df)) ユーザ システム 経過 1.180 1.072 2.255 18
20.
データ加⼯・集計 � キーの付加(setkey関数) # キーの付加(dAge,
dIncome1 をキーにする) setkey(usc.dt, dAge, dIncome1) # オブジェクトのリストの中にもキーが表⽰されている tables() NAME NROW MB [1,] usc.dt 2,458,285 648 COLS [1,] caseid,dAge,dAncstry1,dAncstry2,iAvail,iCitizen,iClass, dDepart,iDisabl1,iDisabl2 KEY キーが付加された [1,] dAge,dIncome1 Total: 648MB > > > > 19
21.
データ加⼯・集計 � バイナリサーチを⽤いた⾼速な要素抽出 > #
2つのキーの値によりデータの要素へのアクセスが可能 > system.time(x <- usc.dt[1, 1]) ユーザ システム 経過 0.000 0.000 0.001 dAge=1 かつ dIncome1=1の ⾏の取得 > # ⽐較: 通常のデータフレームを⽤いた場合 > system.time(y <- usc.df[usc.df$dAge==1 & usc.df$dIncome1==1, ]) ユーザ システム 経過 1.536 0.096 1.637 20
22.
データ加⼯・集計 � グループ化処理による集計 > #
キーの値ごとの層別集計 > system.time(x <- usc.dt[, sum(dIncome1), by=dAge]) ユーザ システム 経過 0.032 0.000 0.033 > x 第2引数には集計処理を, dAge V1 by引数には集計軸を指定 1: 0 0 2: 1 0 3: 2 89043 4: 3 462080 5: 4 638323 6: 5 525549 7: 6 415373 8: 7 74411 21
23.
データ加⼯・集計 � グループ化処理による集計 > #
⽐較: 通常のデータフレームを⽤いた場合 > system.time(y <- tapply(usc.df$dIncome1, usc.df$dAge, sum)) ユーザ システム 経過 1.580 0.004 1.584 > y 0 1 2 3 4 5 6 7 0 0 89043 462080 638323 525549 415373 74411 22
24.
その他の機能 � テーブルの⾼速ジョイン(merge関数) � テーブルの要素の抽出(subset関数) �
リファレンスによるオブジェクトの要素の値変更 等 23
25.
3. まとめ 24
26.
� データフレームは,とても便利なRのデータ 構造だが,⼤規模データの読み込みや処 理が遅いことがある. � そんなときは,data.tableパッケージを⽤ いて,データの読み込み,集計,検索な どの⾼速化を検討すべし. 25
27.
� data.tableパッケージについては,R⾔語 上級ハンドブックにより詳しい説明がありま す. 26
Jetzt herunterladen