3
1

JuliaとPythonの組み合わせ

Posted at

はじめに

最近、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のパッケージ管理もCondaCondaPkgどちらがいいんですかね…
これも適当に決めてます(;'∀')

とりあえず、データは作成できました。
ここで、問題がひとつ。
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のコードを書けるなら便利ということもあるかもしれません。
もっと複雑な処理になると組み合わせも困難になるとは思いますが、そのときはそのとき…(/・ω・)/
それでは!!!

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1