裏 RjpWiki

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

Julia のデータフレームで Query

2021年01月30日 | ブログラミング
直にデータフレームを操作するより楽なのかな?
using Query
using RDatasets
mtcars = dataset("datasets", "mtcars");
names(mtcars)
12-element Array{String,1}:
 "Model"
 "MPG"
 "Cyl"
 "Disp"
 "HP"
 "DRat"
 "WT"
 "QSec"
 "VS"
 "AM"
 "Gear"
 "Carb"

@collect で,条件に合ったものをデータフレームとして返す。

q1 = @from i  in mtcars begin
    @where i.AM == 1
    @select {i.Model, i.Cyl, i.MPG, i.WT}
    @collect DataFrame
end
13 rows × 4 columns
  Model Cyl MPG WT
  String Int64 Float64 Float64
1 Mazda RX4 6 21.0 2.62
2 Mazda RX4 Wag 6 21.0 2.875
3 Datsun 710 4 22.8 2.32
4 Fiat 128 4 32.4 2.2
5 Honda Civic 4 30.4 1.615
6 Toyota Corolla 4 33.9 1.835
7 Fiat X1-9 4 27.3 1.935
8 Porsche 914-2 4 26.0 2.14
9 Lotus Europa 4 30.4 1.513
10 Ford Pantera L 8 15.8 3.17
11 Ferrari Dino 6 19.7 2.77
12 Maserati Bora 8 15.0 3.57
13 Volvo 142E 4 21.4 2.78
 

普通のデータフレームになる。

using Statistics
cor(q1[!, 3], q1[!, 4])
-0.9089147883714981
cor(Matrix(q1[:, 2:4]))
3×3 Array{Float64,2}:
  1.0       -0.825998   0.847024
 -0.825998   1.0       -0.908915
  0.847024  -0.908915   1.0

@collect しなければ,イテレータを返す。

q2 = @from i  in mtcars begin
    @where i.AM == 1
    @select {i.Model, i.WT}
end
Model WT
"Mazda RX4" 2.62
"Mazda RX4 Wag" 2.875
"Datsun 710" 2.32
"Fiat 128" 2.2
"Honda Civic" 1.615
"Toyota Corolla" 1.835
"Fiat X1-9" 1.935
"Porsche 914-2" 2.14
"Lotus Europa" 1.513
"Ford Pantera L" 3.17

... with more rows.

イテレータは for や 内包表記で使える。

for i in q2
    println("$(i.Model): weight is $(i.WT)")
end
Mazda RX4: weight is 2.62
Mazda RX4 Wag: weight is 2.875
Datsun 710: weight is 2.32
Fiat 128: weight is 2.2
Honda Civic: weight is 1.615
Toyota Corolla: weight is 1.835
Fiat X1-9: weight is 1.935
Porsche 914-2: weight is 2.14
Lotus Europa: weight is 1.513
Ford Pantera L: weight is 3.17
Ferrari Dino: weight is 2.77
Maserati Bora: weight is 3.57
Volvo 142E: weight is 2.78
[i.Model for i in q2 if i.WT > 2.5]
6-element Array{String,1}:
 "Mazda RX4"
 "Mazda RX4 Wag"
 "Ford Pantera L"
 "Ferrari Dino"
 "Maserati Bora"
 "Volvo 142E"
コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« Julia と R のコラボレーショ... | トップ | Julia で k-means クラスター... »
最新の画像もっと見る

コメントを投稿

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