Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Use R from Python
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
airspace_nobo
July 27, 2019
Technology
370
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Use R from Python
airspace_nobo
July 27, 2019
More Decks by airspace_nobo
See All by airspace_nobo
Try using dbtplyr
airspace_nobo
0
31
Other Decks in Technology
See All in Technology
第67回コンピュータビジョン勉強会CVPR2026読会前編
tsukamotokenji
0
170
なぜ、あなたのAPIは使われないのか? AX時代の設計原則、ガードレール、運用体制
yokawasa
1
220
複数プロダクトで進めるAI機能実装 ── 実践から得たリアルな学びとロードマップ実現への挑戦 / AICon2026_yanari
rakus_dev
1
280
_NIKKEI_Tech_Talk__勉強会は熱量では続かない___17回続いた輪読会の設計術.pdf
_awache
2
110
変更し続けられるシステムをどう保つか — AI時代のSSoTという設計原則
kawauso
1
1.1k
データと地図で読む 大井町の「かわるもの、かわらないもの」
yoshiyama_hana
0
160
AI時代におけるエンジニアの新たな役割──FDEとクオリアの探求/登壇資料(戸井田 裕貴)
hacobu
PRO
0
360
穢れた技術選定について
watany
19
6.2k
VPCセキュリティ対応の最新事情
nagisa53
1
310
文字起こし基盤の信頼性
abnoumaru
0
130
AI x 開発生産性を取り巻く予算戦略と投資対効果
i35_267
7
3.1k
JAWS_ICEBERG_BASECAMP
iqbocchi
2
110
Featured
See All Featured
WENDY [Excerpt]
tessaabrams
11
38k
Chasing Engaging Ingredients in Design
codingconduct
0
240
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
190
Between Models and Reality
mayunak
4
380
Faster Mobile Websites
deanohume
310
32k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Being A Developer After 40
akosma
91
590k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
210
So, you think you're a good person
axbom
PRO
2
2.1k
Building AI with AI
inesmontani
PRO
1
1.1k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
3
360
Code Review Best Practice
trishagee
74
20k
Transcript
6TF3GSPN1ZUIPO 5PLZP3 !BJSTQBDF@OPCP
ࣗݾհ w ໊લখ௶ୖਓ,PUTVCP5BLVUP w 5XJUUFS!BJSTQBDF@OPCP w ݱࡏम࢜ ༛༧िؒ w
ະདྷσʔλαΠΤϯςΟετ w ݚڀγϦϯυϦΧϧλΠϜγϦʔζ w ༻3 1ZUIPO ࡱӨऀ!LVSDLZ@Z
ࢲͱ3ͱ1ZUIPO w 3σʔλϋϯυϦϯά HHQMPU ౷ܭղੳؔ࿈ ٸ͍ͰΔ࣌ w 1ZUIPOػցֶश LFSBT εΫϥον͢Δ࣌
͓ۚՔ͙࣌ ͓ޓ͍ͷྑ͍ͱ͜ΖΛ͏·͘Ҿ͖ग़͍ͨ͠
QZQFSࣄ࢝Ί w QJQͰΠϯετʔϧ w SQZQFS3 Λ࣮ߦ͠ SΠϯελϯεʹ SίʔυΛ จࣈྻͱͯ͠༩͑Δ w
݁ՌΛදࣔ͢Δ࣌ʹ QSJOUΛ͏ r = pyper.R() r("a <- 5") print(r("a")) # ݁Ռ # try({a}) # [1] 5 r("b <- 10") print(r("a + b")) # ݁Ռ # try({a + b}) # [1] 15 pip install pyper
w Sͱಉ༷ʹ ಡΈࠐΜͰ͍ͳ͍ QBDLBHFͷؔ͑ͳ͍ w ؔΛಡΈࠐΊ ύΠϓԋࢉࢠ ͑Δʂ r =
pyper.R() print(r("glimpse(iris)")) # not find function "glimpse" r = pyper.R() r("library(tidyverse)") print(r("glimpse(iris)")) # try({glimpse(iris)}) print(r("iris %>% glimpse")) # try({iris %>% glimpse}) QZQFSؔಡΈࠐΈ
QZQFS QZUIPOS w SQZQFS3 VTF@QBOEBTb5SVF` Ͱ QBOEBT%BUB'SBNF͕͑Δ w SBTTJHOؔͰ
EG QZUIPO Λ Q@EG S ʹׂΓͯΔ n = 300 x = np.random.poisson(10, n) y = np.random.normal(0, 5, n) # dataFrame df = pd.DataFrame({"X":x, "Y":y}) r = pyper.R(use_pandas='True') r.assign("p_df", df) print(r("summary(p_df)"))
QZQFS SQZUIPO w SHFUؔ SͷσʔλΛQZUIPOଆͰ ༻Ͱ͖ΔΑ͏ʹ͢Δ w σʔλͷܕҎԼʹͳΔ ϕΫτϧOVNQZBSSBZ
σʔλϑϨʔϜQBOEBT%BUB'SBNF r = pyper.R() r("rx <- rexp(300,1)") r("rdf <- data.frame(x = 1:200, y = rnorm(200))") px = r.get(“rx") pdf = r.get("rdf") plt.hist(px, bins=20) plt.ylabel("freq") plt.show()
QZQFS SQZUIPO w σʔλϑϨʔϜܕΛQZUIPOʹ࣋ͬͯ͘Δͱ ΧϥϜ໊ʹεϖʔε͕ೖΔͷ Ͱ औΓআ͘ඞཁ͋Δʂʂ print(pdf.columns) pdf.columns
= pdf.columns.str.replace(' ', '') print(pdf.columns) Index(['x', 'y'], dtype='object')
Ϣʔβࣗ࡞ؔ w σʔλͷߦྻΛදࣔ͢Δؔ TIBQF@EBUB Λఆٛͨ͠εΫϦϓτϑΝ ΠϧΛ SͰಡΈࠐΉΑ͏ʹQZUIPOΛ௨ͯ͡ಡΈࠐΊΔ shape_data <- function(data){
sprintf("σʔλ%dߦ, %dྻͰ͢!!",NROW(data), NCOL(data)) } r = pyper.R(use_pandas='True') r("source('~/Desktop/TokyoR/script/function.R', echo=FALSE)") print(r("shape_data(iris)"))
Ϣʔβࣗ࡞ؔ w ͪΖΜQZUIPOଆ͔Β༩͑ͨσʔλʹରͯࣗ͠࡞ؔΛద༻Մೳ σʔλ͕গ͠ҟͳΔͷͰ ྻʹͳΔ w ΠϯελϯεΛॳظԽ͠ͳ͚Ε ؔอ࣋͞ΕΔʂ from
sklearn.datasets import load_iris iris = load_iris() iris = pd.DataFrame(data=iris.data, columns=iris.feature_names) r.assign("p_iris", iris) print(r("shape_data(p_iris)"))
ศརͳ͍ํΛߟ͑Δ w SͰ͜Μͳؔ࡞ͬͯʜ w QZUIPOͰ͜Μͳؔ࡞Εʜ library(tidyverse); library(skimr) view_data <- function(data){
print("use skim function"); skim(data) %>% kable print("use glimpse function"); glimpse(data) } def view_data(data): r = pyper.R(use_pandas='True') r("source('~/Desktop/TokyoR/script/function.R', echo=FALSE)") r.assign("p_data", data) print(r(“view_data(p_data)”)) view_data(iris)
ศརͳ͍ํΛߟ͑Δ w ͜Μͳ݁Ռ͕ಘΒΕΔ
ศརͳ͍ํΛߟ͑Δ w ͬͺΓSͰHHQMPUΛॻ͖͍ͨ࣌ ͦͦTUBU@DPOUPVS͍͍ͨ࣌ UIFNF@NJOBNBM ͡Όͳ͍ͱݏͩʂͱ͍͏࣌ w QZUIPOͰΞϧΰϦζϜΛεΫϥονͯ͠ ࣮ߦ݁ՌΛHHQMPUͰඒ͘͠ඳ͖ ͍ͨ࣌
େ͖ͳ w దͳσʔλϑϨʔϜΛ࡞ ͢ΔؔΛ࡞Δ w 3ͰͷEBUBGSBNF࡞࣌ؒ 1ZUIPOͷσʔλҠߦ࣌ؒ w LBHHMFͱ͔Ͱ
લॲཧ3Ͱॻ ͍ͯ σʔλͦͷ··ࣸͯ͠ ػցֶशʹҠߦ͢ΔΈ͍ͨͳ ͜ͱ͕Ͱ͖ͳ͍ fun <- function(len){ df1 <- tibble(aaa = 1:len, bbb = 10000:10000+len, ccc = 1000000:1000000+len, ddd = rbinom(len,1,0.5), eee = rnorm(len, 0, 100000), fff = rlnorm(len, 0, 100), ggg = stri_rand_strings(n=len, length=10), hhh = seq(as.Date("2018-03-07"), by="day", length.out=len)) return(df1) } MFO 3 1ZUIPO TFD TFD TFD TFD TFD ແཧ
·ͱΊ w ԿΒ͔ͷཧ༝͕͋ͬͯ QZUIPOSΘͳ͍ͱ͍͚ͳ͍࣌ SͰ࡞ͨ͠ ؔΛ͑Δͷ࣌ؒతʹ อकతʹศར w ࣗͰ͏ʹͳͦ͞͏͕ͩ
ਓʹ࡞ͨ͠ίʔυΛ͢ͳͲͷ࣌ ҙ͕ඞཁ w ձࣾͰ1ZUIPO͔͑͠ͳ͍ਓ͕ͨͪ ͬͦ͜Γ͑Δ w SFUJDVMBUFQBDLBHFͷํ͕ศར ݸਓͷײ
3PS1ZUIPO 8IZOPU#PUI &OKPZ