Récemment, à propos de Basic data plotting et File input / output method par R expliqué.
Il y a une tendance à tout faire avec Python comme langage d'analyse de données, mais c'est encore une grande partie du passé Les actifs de R sont attrayants et pas si facilement tronqués.
Un cas courant est celui où vous souhaitez utiliser R pour une analyse partielle des données, mais que vous souhaitez écrire toute la programmation en Python. Vous pouvez également utiliser R pour le traçage uniquement. Dans un tel cas, il serait pratique que Python et R puissent être liés pour résoudre le problème à la fois.
Il semble qu'une bibliothèque appelée RPy2 a été utilisée dans le passé, mais récemment, le courant dominant est [PypeR](http: //www.webarray. org / logiciels / PypeR /).
L'installation est simple. Installez avec le gestionnaire de package pip.
pip install pyper
Considérez le code R suivant (scatter.R).
png("image.png ", width = 480, height = 480,
pointsize = 12, bg = "white", res = NA)
plot(data$WRAIN, data$LPRICE2, pch=16,
xlab="Précipitations d'octobre à mars de l'année de récolte précédente",
ylab="Prix du vin")
dev.off()
Il s'agit d'un simple code source R qui extrait deux colonnes des données, les trace et les écrit dans un fichier .png.
Passons les données à ce R en Python, puis récupérons l'objet côté Python. Les données originales sont un fichier CSV qui permet d'économiser le prix du vin et peuvent être consultées depuis ici.
import pyper
import pandas as pd
#Lire les données CSV avec Python
wine = pd.read_csv("wine.csv")
#Créer une instance de R
r = pyper.R(use_pandas='True')
#Passer un objet Python à R
r.assign("data", wine)
#Exécutez le code source R
r("source(file='scatter.R')")
Le contenu de wine.csv lu en Python est maintenant passé à R et tracé avec succès.
D'un autre côté, vous voudrez peut-être récupérer le résultat du traitement R en Python. Dans de tels cas, vous pouvez récupérer l'objet R avec la méthode r.get.
#Exécuter le code R
r("res1 = cor.test(data$WRAIN, data$LPRICE2)")
r("data1 = subset(data, LPRICE2 < 0)")
r("res2 = cor.test(data1$WRAIN, data1$LPRICE2)")
#Lire des objets R en Python
res1 = pd.Series(r.get("res1"))
res2 = pd.Series(r.get("res2"))
print(res1)
#=>
#alternative two.sided
#conf.int [-0.258366126613384, 0.489798400688013]
#data.name data$WRAIN and data$LPRICE2
#estimate 0.1348919
#method Pearson's product-moment correlation
#null.value 0
#p.value 0.5023297
#parameter 25
#statistic 0.6806807
#dtype: object
print(res2)
#=>
#alternative two.sided
#conf.int [-0.409535600260672, 0.364710477639889]
#data.name data1$WRAIN and data1$LPRICE2
#estimate -0.02636626
#method Pearson's product-moment correlation
#null.value 0
#p.value 0.8982662
#parameter 24
#statistic -0.1292127
#dtype: object
Cette fois, j'ai utilisé des pandas, mais ce n'est pas obligatoire. Cependant, pouvoir interagir directement avec des objets pandas de type R est très utile.
Vous pouvez transmettre les données à R uniquement lorsque vous en avez besoin, puis renvoyer le résultat sous forme d'objet à Python. C'est beaucoup plus pratique que d'écrire les données dans un fichier externe et de l'exécuter séparément. La disponibilité des ressources de R à partir de Python rend Python de plus en plus utile en tant que langage de collage.
Essayez d'utiliser R de Python avec Python + PypeR http://mia-0032.hatenablog.jp/entry/2013/08/30/000000
Je veux utiliser R de Python - mais RPy2 n'est pas bon - http://d.hatena.ne.jp/dichika/20130213/1360718736
Recommended Posts