10
9

More than 1 year has passed since last update.

RとPython、SQLの対応表

Last updated at Posted at 2022-05-22

RとPython、SQLの書き方が混乱するのでそれぞれ整理してみました。
内容に関して間違いがあればご指摘頂けますと幸いです。
また「---」は現在調査中の項目であり、随時追記していきます。

2023/3/26 追記 ------------------------------------------------------------------------------
R初学者のためのtidyverse100本ノックを作成しました。Rのコードに関してはこちらのほうがより詳細に分かりやすいかと思いますのでご参考ください。

読み込み関連

内容           R               Python            SQL             
csv読み込み read.csv("hoge.csv") pd.read_csv("hoge.csv") ---
選択して読み込み read.csv( file.choose() ) --- ---

データの確認

内容           R               Python            SQL             
行列数の確認 dim(df) df.shape ---
行数の確認 nrow(df) len(df) count(hoge)
データ型の確認 str(df) df.dtypes ---
先頭行の確認 head(df) df.head(3) sel * sample 3
カラム名の確認 names(df) --- ---
要約統計量の確認 summary(df) df.describe(include='all')
またはdf.info()
(自分で計算する必要有)

行列の抽出・加工

内容           R               Python            SQL             
特定列の抽出 df$hoge df["hoge"] sel hoge
新規列の追加 mutate(df,hoge="abc") df["hoge"]="abc" sel 'abc' as hoge
特定列の値を条件にdfの抽出 filter(df,hoge=="abc") df[df['huge'] == 'abc']
またはdf.query('hoge=="abc"')
… where hoge ='abc'
and huga ='abc'
特定列の値を条件に別の列を追加 mutate(df,hoga =
if_else(hoge == "aaa" ,1,0)))
df['huga']=
df["hoge"].apply(lambda x:1 if x="aaa" else 0)
※後述のleft_joinも参考
sel CASE
WHEN hoge = 'aaa' THEN 0
WHEN hoge = 'bbb' THEN 1
ELSE 'other' END
特定列の値を条件に別の値に書き換え 同上 mutateで追加する追加列名と置換条件を揃える df["hoge"]=
df["hoge"].replace({"aaa":0,"bbb":1})
同上
不要行の削除 --- df.drop(["hoge"],axis=0) ---
不要列の削除 df[,hoge]<-NULL df.drop(["hoge"],axis=1) (対象外)

テーブルの結合

内容           R               Python            SQL             
left join left_join(df1,df2,by="hoge") pd.merge(df1,df2,left_on="hoge",right_on="huge",how="left") from t1 left join t2
on t1.hoge = t2.hoge
inner join inner_join(df1 , df2 ,by="hoge") pd.merge(df1,df2,on="hoge",how="inner") from t1 inner join t2
on t1.hoge = t2.hoge
上下方向の結合 rbind(df1, df2) pd.concat([df1, df2],axis=0) t1 UNION ALL t2

集計

内容           R               Python            SQL             
group_byの処理 group_by(df,hoge)%>%
summarise(huga=SUM(values))
df.groupby('hoge').sum()["values"] sel sum(huga)…
where… GROUP BY 1
pivot_tableの作成 pivot_wider(df,names_from = "year", values_from = "amount")
※動作未検証
pd.pivot_table(data=df
,index="~"
,colmuns="~"
,values="~"
,aggfunc="sum")
sel a,b,c
from …
PIVOT(SUM([huga]) FOR [hoge] IN (a,b,c)) as …
where …
※動作未検証

可視化・分析

内容           R               Python            SQL             
散布図 plot(hoge,huga) plt.scatter(hoge,huga) (対象外)
ヒストグラム hist(df, breaks=10) plt.hist(x, bins=10) (対象外)
重回帰分析 model = lm(hoge~huga+hugo)
summary(model)
lr = LinearRegression()
model = lr.fit(X_train,y_train)
result = model.predict(X_test)
(対象外)

その他

内容           R               Python            SQL             
コメント記述方法 # コメント # コメント --コメント または
/* コメント */
改行関連 『パイプ演算子』
例. df=iris %>%
filter(Species=='setosa')
『\でコード改行可』
例. hogehoge\
hogehoge
(任意の位置で改行可)
CSV出力 write.table(df1, "hoge.csv"
,append = F #上書き
,sep = "," #カンマ区切り
,row.names = F #行名を加えるか
,quote = F)
df.to_csv("hoge.csv", encoding="cp932") ---

※参考にした記事
R と Python よく出るテーブル処理対応表 https://kopaprin.hatenadiary.jp/entry/2020/06/04/003407
Rとdplyrでピボットテーブル https://qiita.com/ishiijunpei/items/bc8da014a18e2a849978
ひと目でわかるPandasとSQLの対応表 https://qiita.com/kannoma/items/d8ab1f7b6cfa62b05707
SQL ServerのPIVOT句・UNPIVOT句 https://www.casleyconsulting.co.jp/blog/engineer/162/

10
9
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
10
9