それぞれの個性あふれるフィギュアとなって登場︕ ...2019/07/12 · アドベンチャーワールドのパンダファミリー6 頭が それぞれの個性あふれるフィギュアとなって登場
Data frameあれこれ
-
Upload
weda654 -
Category
Data & Analytics
-
view
602 -
download
1
description
Transcript of Data frameあれこれ
![Page 1: Data frameあれこれ](https://reader033.fdocuments.net/reader033/viewer/2022061203/547e437cb379597b2b8b544c/html5/thumbnails/1.jpg)
DataFrame.jl あれこれ
version 1.0初心者 ( 俺向け ) セッション的なあれ
Julia Tokyo #2
@weda_654
![Page 2: Data frameあれこれ](https://reader033.fdocuments.net/reader033/viewer/2022061203/547e437cb379597b2b8b544c/html5/thumbnails/2.jpg)
注意事項• 本資料は突貫工事ゆえ不完全な箇所があります
• Julia の version は 0.4.0-dev+728, DataFrames の version は 0.5.7
• 今後も内容を更新させていきますので勘弁して下さい
• はじめての Keynote 使い方よくわかりません><
要するに
ガバガバな資料です
![Page 3: Data frameあれこれ](https://reader033.fdocuments.net/reader033/viewer/2022061203/547e437cb379597b2b8b544c/html5/thumbnails/3.jpg)
自己紹介
• 本日の発表者の中でも最弱
• Julia 歴 : 2.5 ヶ月 ( 実働時間は 2 〜 3 日ぐらい )
• weda.654 (@weda_654)
• データ分析 ( 前処理とドキュメント作成 )に従事する新入社員
• 使用言語 : R( メイン ), Python( たまに )
こんなアイコン
![Page 4: Data frameあれこれ](https://reader033.fdocuments.net/reader033/viewer/2022061203/547e437cb379597b2b8b544c/html5/thumbnails/4.jpg)
なんのために学んでいますか?
![Page 5: Data frameあれこれ](https://reader033.fdocuments.net/reader033/viewer/2022061203/547e437cb379597b2b8b544c/html5/thumbnails/5.jpg)
データ分析のために学んでいます
![Page 6: Data frameあれこれ](https://reader033.fdocuments.net/reader033/viewer/2022061203/547e437cb379597b2b8b544c/html5/thumbnails/6.jpg)
データ分析といえば
![Page 7: Data frameあれこれ](https://reader033.fdocuments.net/reader033/viewer/2022061203/547e437cb379597b2b8b544c/html5/thumbnails/7.jpg)
R や Python といえば
DataFrame !
* Python は pandas を導入すると使える
今回は DataFrame.jl よりJulia で DataFrame を扱ってみます
![Page 8: Data frameあれこれ](https://reader033.fdocuments.net/reader033/viewer/2022061203/547e437cb379597b2b8b544c/html5/thumbnails/8.jpg)
DataFrame.jl とは
• 作者は John myles White
• 機械学習入門の筆者
• Julia の統計周りでいろいろパッケージをつくっている
• Julia でデータフレームを扱うためのパッケージ
![Page 9: Data frameあれこれ](https://reader033.fdocuments.net/reader033/viewer/2022061203/547e437cb379597b2b8b544c/html5/thumbnails/9.jpg)
お品書• DataFrame とは
• DataFrame をつくる• 行数・列数の出力• データの抽出• colwise 関数
• データの要約
• データのソート• 導入
• データの結合
![Page 10: Data frameあれこれ](https://reader033.fdocuments.net/reader033/viewer/2022061203/547e437cb379597b2b8b544c/html5/thumbnails/10.jpg)
DataFrame とは (1)• 量的変数と質的変数などの型の違うデータの
混在ができる行列
6x5 DataFrame|————|——-————|——————|———————|——————|—————|| Row # | SepalLength | SepalWidth | PetalLength | PetalWidth | 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" |
![Page 11: Data frameあれこれ](https://reader033.fdocuments.net/reader033/viewer/2022061203/547e437cb379597b2b8b544c/html5/thumbnails/11.jpg)
DataFrame とは (2)• なぜ DataFrame を使うのか
We believe that Julia is the future of technical computing. Nevertheless, Base Julia is not sufficient for statistical computing. The DataFrames package (and its sibling, DataArrays) extends Base Julia by introducing three basic types needed for statistical computing:
超意訳 : Julia で統計やりたい
![Page 12: Data frameあれこれ](https://reader033.fdocuments.net/reader033/viewer/2022061203/547e437cb379597b2b8b544c/html5/thumbnails/12.jpg)
導入 (1)
Pkg.add(“DataFrames")Pkg.add(“RDatasets”)
• パッケージの導入
using DataFrames, RDatasets
* データフレームとサンプルデータのパッケージを導入
• パッケージの読み込み
![Page 13: Data frameあれこれ](https://reader033.fdocuments.net/reader033/viewer/2022061203/547e437cb379597b2b8b544c/html5/thumbnails/13.jpg)
導入 (2)• データの用意
iris = dataset(“datasets”, “iris”)* RDatesets パッケージより iris データを呼び出す
• ベクトル・配列データvc = [1, 2, 3]array = [1 2 3 ; 4 5 6]
vc2 = @data([1, 2, 3, NA])array2 = @data([1 2 3 ; 4 NA 6])
* @data() で NA( 欠損値 ) を許容
![Page 14: Data frameあれこれ](https://reader033.fdocuments.net/reader033/viewer/2022061203/547e437cb379597b2b8b544c/html5/thumbnails/14.jpg)
DataFrame をつくる
df = DataFrame(A = data([11, 22, 33, 44, 55]), B = data(["a", "b", "c", "d", "e"]))
5x2 DataFrame|——-—|——-|——|| Row # | A | B || 1 | 11 | "a" || 2 | 22 | "b" || 3 | 33 | "c" || 4 | 44 | "d" || 5 | 55 | "e" |
![Page 15: Data frameあれこれ](https://reader033.fdocuments.net/reader033/viewer/2022061203/547e437cb379597b2b8b544c/html5/thumbnails/15.jpg)
行数・列数の出力• DataFrame の行数・列数を確認する
行数size(df, 1)nrow(df)
列数size(df, 2)ncol(df)
* df の行数を出力
* df の列数を出力
![Page 16: Data frameあれこれ](https://reader033.fdocuments.net/reader033/viewer/2022061203/547e437cb379597b2b8b544c/html5/thumbnails/16.jpg)
データの抽出 (1)• データの先頭を抜き出す
head(iris)
抜き出す行数を設定することもできるhead(iris, 10)
* iris から先頭 10 行を抜き出す
• データの末尾を抜き出す
tail(iris)
* head() と同じく行数の設定が可能
![Page 17: Data frameあれこれ](https://reader033.fdocuments.net/reader033/viewer/2022061203/547e437cb379597b2b8b544c/html5/thumbnails/17.jpg)
データの抽出 (2)• 行を指定して抜き出す
df[1, : ]
• 列を指定して抜き出す
df[1]
df[:A]
df[“A”]
* df から 1 行目を抜き出す
* df から 1 列目を抜き出す
列名を指定して抜き出すこともできる
* df から列名” A" を抜き出す
![Page 18: Data frameあれこれ](https://reader033.fdocuments.net/reader033/viewer/2022061203/547e437cb379597b2b8b544c/html5/thumbnails/18.jpg)
データの抽出 (3)• 行と列を指定して抜き出す
df[1, 1] * df から 1 行 ,1 列にある要素を抜き出す
• 抽出条件を設けて抜き出すdf[df[:A] .> 30, : ]
* df の A 列において値が 30 以上の行を抜き出す
iris[iris[:Species] .== “setosa”, : ]
* iris の Species 列において値が” setosa” の行を抜き出す
![Page 19: Data frameあれこれ](https://reader033.fdocuments.net/reader033/viewer/2022061203/547e437cb379597b2b8b544c/html5/thumbnails/19.jpg)
colwise 関数• 列ごとに関数を実行する
colwise(mean, df[:A])
* df の A 列の平均をとる
colwise(median, iris[1:3])
* iris の 1 〜 3 列の中央値をとる
![Page 20: Data frameあれこれ](https://reader033.fdocuments.net/reader033/viewer/2022061203/547e437cb379597b2b8b544c/html5/thumbnails/20.jpg)
データの結合 (1)• 行方向の結合
rbind(df, df)
* 2 つの df を行方向に結合する
10x2 DataFrame|————|——|———|| Row # | A | B || 1 | 11 | "a" || 2 | 22 | “b" || 3 | 33 | "c" || 4 | 44 | “d" || 5 | 55 | "e" || 6 | 11 | "a" || 7 | 22 | "b" || 8 | 33 | "c" || 9 | 44 | "d" || 10 | 55 | "e" |
![Page 21: Data frameあれこれ](https://reader033.fdocuments.net/reader033/viewer/2022061203/547e437cb379597b2b8b544c/html5/thumbnails/21.jpg)
データの結合 (2)• 列方向の結合
cbind(df, df)
* 2 つの df を列方向に結合する
5x4 DataFrame|————|-—-|——|——-|—-—|| Row # | A | B | A_1 | B_1 || 1 | 11 | "a" | 11 | "a" || 2 | 22 | "b" | 22 | "b" || 3 | 33 | "c" | 33 | "c" || 4 | 44 | "d" | 44 | "d" || 5 | 55 | "e" | 55 | "e" |
![Page 22: Data frameあれこれ](https://reader033.fdocuments.net/reader033/viewer/2022061203/547e437cb379597b2b8b544c/html5/thumbnails/22.jpg)
データの結合 (3)• データのマージ
df2 = DataFrame(A = data([11, 22, 33, 44, 55]), C = data(["f", "g", "h", "i", "j"]))
* マージ用の DataFrame を作成
join(df, df2, on=:A)
* A 列をキーとして df と df2 を結合する5x3 DataFrame|————|—-|——|——|| Row # | A | B | C || 1 | 11 | "a" | "f" || 2 | 22 | "b" | "g" || 3 | 33 | "c" | "h" || 4 | 44 | "d" | "i" || 5 | 55 | "e" | "j" |
join は kind で結合の仕方を設定できる
![Page 23: Data frameあれこれ](https://reader033.fdocuments.net/reader033/viewer/2022061203/547e437cb379597b2b8b544c/html5/thumbnails/23.jpg)
データのソート• 昇順に並び替える
sort!(iris)
• 降順に並び替える
sort!(iris, rev = true)
• キーとなる列を設定して並び替えるsort!(iris, cols = :SepalWidth)sort!(iris, cols = [:SepalLength, :SepalWidth])
![Page 24: Data frameあれこれ](https://reader033.fdocuments.net/reader033/viewer/2022061203/547e437cb379597b2b8b544c/html5/thumbnails/24.jpg)
データの要約• 基礎統計量を求める
describe(iris)
最小値 , 第 1 四分位 , 中央値 , 平均 , 第 3 四分位 , 最大値 , 欠損値の数 , 欠損値の占める割合
by(iris, :Species, MEAN -> mean(iris[:PetalLength]))
• 列の要素をキーにして関数を実行する
* Species の各要素ごとに PetallLength の平均を求める
![Page 25: Data frameあれこれ](https://reader033.fdocuments.net/reader033/viewer/2022061203/547e437cb379597b2b8b544c/html5/thumbnails/25.jpg)
今回はここまで
もっと DataFrames.jl を知るのなら
John myles white を追っかけしましょうhttp://www.johnmyleswhite.com/
![Page 26: Data frameあれこれ](https://reader033.fdocuments.net/reader033/viewer/2022061203/547e437cb379597b2b8b544c/html5/thumbnails/26.jpg)
ご清聴ありがとうございました