はじめに
最近、Juliaを用いたデータ処理が増えてきました。
そこで、Juliaで処理するデータを用意し、Pythonで処理できるのか?という疑問から今回の記事をまとめたいと思います。
Julia + Python
今回は、Juliaでデータフレームを作成し、PyCall
を用いてデータフレームを処理していきたいと思います。
PythonCall
の方が良いとかいう噂もありますが、個人的にPyCall
の方が使いやすいんですよね…(´・ω・`)
ということで、まずはデータフレームを作っていきましょう。
using DataFrames
using PyCall
using Conda;Conda.add("pandas")
df = DataFrame(A = 1:4, B = ["M", "F", "F", "M"])
Pythonのパッケージ管理もConda
とCondaPkg
どちらがいいんですかね…
これも適当に決めてます(;'∀')
とりあえず、データは作成できました。
ここで、問題がひとつ。
Juliaで作成されたデータフレームをPythonのpandasで処理しようとすると、型やらなんやらでエラーが発生してしまいます。
そこで、一度辞書に変換して、pandasでデータフレームに変換します。
function dataframe_to_pydict(df::DataFrame)
pydict = Dict{Symbol,Any}()
for name in names(df)
pydict[Symbol(name)] = getproperty(df, name)
end
return pydict
end
pydict = dataframe_to_pydict(df)
これをPyCall
を用いて、Pythonのコードを書いて実行してみましょう。
@pyimport pandas as pd
py_df = pd.DataFrame(pydict)
py_df.drop(columns=["A"])
はい、お馴染みのPythonそのまんまのコードを書くだけですね。
まとめ
今回は、普段ではほぼ有り得ないようなデータ処理を行いましたが、JuliaとPythonを組み合わせてデータ処理をすることは可能だということが分かりました。
以前、Pythonでcsvファイルを読み込もうとしたとき、エンコーディングの関係でうんともすんとも言わず、Juliaでエンコーディングしたところ一発で読み込めたことがあります。
そういったときには今回の内容は役に立つのかなと思います。
まあ、そのままJuliaで書いた方が早い説もありますが、Juliaに慣れていない人からすると、Pythonのコードを書けるなら便利ということもあるかもしれません。
もっと複雑な処理になると組み合わせも困難になるとは思いますが、そのときはそのとき…(/・ω・)/
それでは!!!