Setup

library(reticulate)
use_python("/usr/local/bin/python")
readr::write_csv(nycflights13::flights,path = "flights.csv")

From Python to R

Use Python to manipulate data

import pandas
flights = pandas.read_csv("flights.csv")
flights = flights[flights['dest'] == "ORD"]
flights = flights[['carrier', 'dep_delay', 'arr_delay']]
flights = flights.dropna()

Use R to visualize Pandas DataFrame

library(ggplot2)
ggplot(py$flights, aes(carrier, arr_delay)) + geom_point() + geom_jitter()


From R to Python

Use R to read and manipulate data

library(tidyverse)
flights <- read_csv("flights.csv") %>%
  filter(dest == "ORD") %>%
  select(carrier, dep_delay, arr_delay) %>%
  na.omit()

Use Python to print R dataframe

print r.flights.head(10)
  carrier  dep_delay  arr_delay
0      UA       -4.0       12.0
1      AA       -2.0        8.0
2      MQ        8.0       32.0
3      AA       -1.0       14.0
4      AA       -4.0        4.0
5      UA        9.0       20.0
6      UA        2.0       21.0
7      AA       -6.0      -12.0
8      MQ       39.0       49.0
9      B6       -2.0       15.0

See the reticulate website for details.

LS0tCnRpdGxlOiAiVGhlIHJldGljdWxhdGUgcGFja2FnZSIKc3VidGl0bGU6ICJJbnRlZ3JhdGlvbiBvZiBQeXRob24gaW50byBSIHByb2plY3RzIgpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sKLS0tCgoqKioKCiMjIyBTZXR1cAoKYGBge3Igc2V0dXB9CmxpYnJhcnkocmV0aWN1bGF0ZSkKdXNlX3B5dGhvbigiL3Vzci9sb2NhbC9iaW4vcHl0aG9uIikKcmVhZHI6OndyaXRlX2NzdihueWNmbGlnaHRzMTM6OmZsaWdodHMscGF0aCA9ICJmbGlnaHRzLmNzdiIpCmBgYAoKKioqCgojIEZyb20gUHl0aG9uIHRvIFIKCgojIyMgVXNlIFB5dGhvbiB0byBtYW5pcHVsYXRlIGRhdGEKCmBgYHtweXRob259CmltcG9ydCBwYW5kYXMKZmxpZ2h0cyA9IHBhbmRhcy5yZWFkX2NzdigiZmxpZ2h0cy5jc3YiKQpmbGlnaHRzID0gZmxpZ2h0c1tmbGlnaHRzWydkZXN0J10gPT0gIk9SRCJdCmZsaWdodHMgPSBmbGlnaHRzW1snY2FycmllcicsICdkZXBfZGVsYXknLCAnYXJyX2RlbGF5J11dCmZsaWdodHMgPSBmbGlnaHRzLmRyb3BuYSgpCmBgYAoKIyMjIFVzZSBSIHRvIHZpc3VhbGl6ZSBQYW5kYXMgRGF0YUZyYW1lCgpgYGB7ciwgZmlnLndpZHRoPTcsIGZpZy5oZWlnaHQ9M30KbGlicmFyeShnZ3Bsb3QyKQpnZ3Bsb3QocHkkZmxpZ2h0cywgYWVzKGNhcnJpZXIsIGFycl9kZWxheSkpICsgZ2VvbV9wb2ludCgpICsgZ2VvbV9qaXR0ZXIoKQpgYGAKCioqKgoKIyBGcm9tIFIgdG8gUHl0aG9uCgojIyMgVXNlIFIgdG8gcmVhZCBhbmQgbWFuaXB1bGF0ZSBkYXRhCgpgYGB7ciwgbWVzc2FnZT1GQUxTRX0KbGlicmFyeSh0aWR5dmVyc2UpCmZsaWdodHMgPC0gcmVhZF9jc3YoImZsaWdodHMuY3N2IikgJT4lCiAgZmlsdGVyKGRlc3QgPT0gIk9SRCIpICU+JQogIHNlbGVjdChjYXJyaWVyLCBkZXBfZGVsYXksIGFycl9kZWxheSkgJT4lCiAgbmEub21pdCgpCmBgYAoKIyMjIFVzZSBQeXRob24gdG8gcHJpbnQgUiBkYXRhZnJhbWUKCmBgYHtweXRob259CnByaW50IHIuZmxpZ2h0cy5oZWFkKDEwKQpgYGAKCioqKgoKU2VlIHRoZSBbcmV0aWN1bGF0ZSB3ZWJzaXRlXShodHRwczovL3JzdHVkaW8uZ2l0aHViLmlvL3JldGljdWxhdGUvaW5kZXguaHRtbCkgZm9yIGRldGFpbHMuCgo=