【Julia】Julia の DataFrame
Python を使用している人は、pandas の DataFrame を用いている人は多いと思います。Julia でも DataFrame.jl というパッケージが用意されており、pandas のそれと同じような操作が行なえます。しかし、Index 名が任意につけることが、2023年6月15日現在ではできません。その現象について以下で記載したいと思います。
pandas の DataFrame
pandas では以下のように DataFrame を定義できると思います。
import pandas as pd
df = pd.DataFrame({
'年齢': [25, 30, 35, 28],
'身長': [170, 160, 175, 155]
},
index = ['John', 'Emily', 'Ryan', 'Jessica'],
)
以上のようにすると、column に「年齢」「身長」が割り振られ、index に「John」「Emily」「Ryan」「Jessica」が割り振られる。この定義により、DataFrame の数値は以下のように取り出せる。
$ df.loc['John', '年齢']
25
DataFrame.jl の場合
前述と同様なことを Julia で行う場合は以下のようになる。
julia> using DataFrames
julia> df = DataFrame(
:年齢 => [25, 30, 35, 28],
:身長 => [170, 160, 175, 155],
:row_names => ["John", "Emily", "Ryan", "Jessica"]
)
4×3 DataFrame
Row │ 年齢 身長 row_names
│ Int64 Int64 String
─────┼─────────────────────────
1 │ 25 170 John
2 │ 30 160 Emily
3 │ 35 175 Ryan
4 │ 28 155 Jessica
上記のように、index 名が定義できないことになる。pandas 上での index 名と column 名をキーとして値を取り出す場合は以下のようにする必要があるだろう。
julia> df[!, "年齢"][df[!, "row_names"] .== "John"]
1-element Vector{Int64}:
25
「df[!, "row_names"] .== "John"」のようにして、"John"の行番号を選択できるようにしなければならず、pandas に比べて面倒な感じになってしまう。
まとめ
pandas の DataFrame と、DataFrame.jl の DataFrame を比較した。pandas だと index 名が指定できるが、DataFrame.jl だと指定できない。これにより、DataFrame.jl の場合は、DataFrame からの値の取り出し方が少し面倒になる気がしている。ここに関しては、イケてる実装方法をご存知の方はご教示いただきたいです…
この記事が気に入ったらサポートをしてみませんか?