【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
─────┼─────────────────────────
   125    170  John
   230    160  Emily
   335    175  Ryan
   428    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 からの値の取り出し方が少し面倒になる気がしている。ここに関しては、イケてる実装方法をご存知の方はご教示いただきたいです…

この記事が気に入ったらサポートをしてみませんか?