PythonからRを使えるようにした
私は大学でRを使って分析をしていたので、Pythonを始めた今もやはりRで分析したい時が多々あります。調べてみるとPython からRを利用できるライブラリのPypeRが最近人気とのことで、早速入れてみました。
インストールはpipで一発です。
pip install pyper
PypeRでPythonで整理したデータをRに渡したり、逆にRの結果をPythonで取り出すこともできます。
Pythonスクリプトの中でRを書きまくるのもなんだかな、と思ったので、基本的に外部のRスクリプトにデータを渡して処理をしてもらう方向で考えてみました。
まずRの外部ファイルを用意します。読み込んだデータから散布図をプロットしてpngで保存するスクリプトです。
quartz(type="png", file="result.png") plot(data$spl, data$unpleasantness, xlab="SPL", ylab="Unpleasantness") title(main="騒音", family="HiraKakuProN-W3", font.main=1) dev.off()
次にPythonで以下のようにdataという変数にCSVデータを読み込みRに渡し、r()の中でRコマンドを実行します。
import pandas as pd import pyper as pr data = pd.read_csv('sampledata/noise.csv') #pandasでCSVの読み込み r = pr.R(use_numpy='True', use_pandas='True') #Rのインスタンスの作成 r.assign('data', data) #PythonオブジェクトをRに渡す r("source(file='scatterplot.R')") #Rのソースファイルを実行
これで、作業ディレクトリにresult.pngが保存されました。
また、r.getメソッドでRからPythonにデータを持ってこれます。
import pandas as pd import pyper as pr data = pd.read_csv('sampledata/noise.csv') r = pr.R(use_numpy='True', use_pandas='True') r.assign("data", data) r("result <- summary(data$spl)") result = r.get("result") print(result) ['47.1' '57.7' '71.25' '67.9' '76.55' '84.6']
This Post Has 0 Comments