julia 1.0.0 + DataFrames v0.13.0 の the dot operator

julia が 1.0 になったことで、the dot operator というやつが導入・強化されているようです。

version は下記のとおりです。

(v1.0) pkg> status
    Status `~/.julia/environments/v1.0/Project.toml`
  [a93c6f00] DataFrames v0.13.0
以下略

まずは、普通にデータフレームを組みます。

julia> df = DataFrame(a=randn(10^5),b=randn(10^5))
100000×2 DataFrame
│ Row    │ a         │ b         │
├────────┼───────────┼───────────┤
│ 1      │ 1.06429   │ -0.665591 │
│ 2      │ 1.34957   │ 1.5088    │
│ 3      │ 1.26694   │ -1.61644  │
...略

julia> df[:c] = "hoge".* string.(collect(1:10^5))
100000-element Array{String,1}:
 "hoge1"     
 "hoge2"     
 "hoge3"   
...略

df の a の column を表示する方法は、df[:a] でしたが、df.a という書式が許されるようになりました。

julia> df[:a]
100000-element Array{Float64,1}:
  1.0642945299080955 
  1.3495717535723946 
  1.2669443981981892 
...略

julia> df.a
100000-element Array{Float64,1}:
  1.0642945299080955 
  1.3495717535723946 
  1.2669443981981892 
...略

R だったら df$a で良かったものを、df[:a]と少しタイプする量が増えていました。これで、ほぼ対等になりますね。

幸か不幸か、python 使いの df.describe みたいな書式も期待してしまいますが、許されていないようです。

julia> describe(df)
3×8 DataFrame. Omitted printing of 2 columns
│ Row │ variable │ mean       │ min      │ median     │ max       │ nunique │
├─────┼──────────┼────────────┼──────────┼────────────┼───────────┼─────────┤
│ 1   │ a        │ 0.006449   │ -4.20703 │ 0.00854218 │ 4.48357   │         │
│ 2   │ b        │ 0.00460347 │ -4.75253 │ 0.00416373 │ 4.2176    │         │
│ 3   │ c        │            │ hoge1    │            │ hoge99999 │ 100000  │

julia> df.describe
ERROR: KeyError: key :describe not found
...略

早く使ってみたいところですが、本格的に使い始めるのは、PyCall.jl が動くようになってからです。

B! LINE