pysqldf
TRANSCRIPT
![Page 1: pysqldf](https://reader031.vdocuments.pub/reader031/viewer/2022022413/58ee5e2d1a28ab23098b4637/html5/thumbnails/1.jpg)
pysqldf
Ryoji Ishii
![Page 2: pysqldf](https://reader031.vdocuments.pub/reader031/viewer/2022022413/58ee5e2d1a28ab23098b4637/html5/thumbnails/2.jpg)
pandas
![Page 3: pysqldf](https://reader031.vdocuments.pub/reader031/viewer/2022022413/58ee5e2d1a28ab23098b4637/html5/thumbnails/3.jpg)
pandas
Rのdataframeの様に表形式のデータ型DataFrameを利用可能にするライブラリ。ただ、データの操作が煩雑。
![Page 4: pysqldf](https://reader031.vdocuments.pub/reader031/viewer/2022022413/58ee5e2d1a28ab23098b4637/html5/thumbnails/4.jpg)
この表データとあの表データを結合して1つの表にしたいんだけど、merge…?concat…?あれ、axisは……あーindexがー……
えー、グルーピングして集計したいけどどのインスタンスにメソッド生えてたっけな…
![Page 5: pysqldf](https://reader031.vdocuments.pub/reader031/viewer/2022022413/58ee5e2d1a28ab23098b4637/html5/thumbnails/5.jpg)
みんなだいすきSQL
![Page 6: pysqldf](https://reader031.vdocuments.pub/reader031/viewer/2022022413/58ee5e2d1a28ab23098b4637/html5/thumbnails/6.jpg)
yhat/pandasql
![Page 7: pysqldf](https://reader031.vdocuments.pub/reader031/viewer/2022022413/58ee5e2d1a28ab23098b4637/html5/thumbnails/7.jpg)
pandasqlDataFrameに対して基本的なクエリ(group-by,join,sub-query等)を実行可能。UDFは使えない。
UDF使えるようにしたプルリク送っても反応がなかった…
![Page 8: pysqldf](https://reader031.vdocuments.pub/reader031/viewer/2022022413/58ee5e2d1a28ab23098b4637/html5/thumbnails/8.jpg)
![Page 9: pysqldf](https://reader031.vdocuments.pub/reader031/viewer/2022022413/58ee5e2d1a28ab23098b4637/html5/thumbnails/9.jpg)
メンテされてないっぽい
![Page 10: pysqldf](https://reader031.vdocuments.pub/reader031/viewer/2022022413/58ee5e2d1a28ab23098b4637/html5/thumbnails/10.jpg)
![Page 11: pysqldf](https://reader031.vdocuments.pub/reader031/viewer/2022022413/58ee5e2d1a28ab23098b4637/html5/thumbnails/11.jpg)
airtoxin/pysqldf
![Page 12: pysqldf](https://reader031.vdocuments.pub/reader031/viewer/2022022413/58ee5e2d1a28ab23098b4637/html5/thumbnails/12.jpg)
pysqldf
アイディアの元になったと思われるR
のsqldfのPython版という事で。
基本のSQLは勿論、UDF・UDAF、クエリが発行出来るデータ型を増やした。
![Page 13: pysqldf](https://reader031.vdocuments.pub/reader031/viewer/2022022413/58ee5e2d1a28ab23098b4637/html5/thumbnails/13.jpg)
unionしたいfrom pysqldf import SQLDF
sqldf = SQLDF(globals()) df1 = {"a": [1,10,100], "b": [2,20,200]} df2 = {"a": [1,11,111], "b": [2,22,222]}
print(sqldf.execute("select * from df1 union select * from df2;")) # [output] # a b # 0 1 2 # 1 10 20 # 2 11 22 # 3 100 200 # 4 111 222 print(sqldf.execute("select * from df1 union all select * from df2;")) # [output] # a b # 0 1 2 # 1 10 20 # 2 100 200 # 3 1 2 # 4 11 22 # 5 111 222
![Page 14: pysqldf](https://reader031.vdocuments.pub/reader031/viewer/2022022413/58ee5e2d1a28ab23098b4637/html5/thumbnails/14.jpg)
集計したいfrom pysqldf import SQLDF, load_iris
sqldf = SQLDF(globals()) iris = load_iris() print(sqldf.execute(""" select species, avg(sepal_length), avg(sepal_width) from iris group by species ;""" )) # [output] # species avg(sepal_length) avg(sepal_width) # 0 Iris-setosa 5.006 3.418 # 1 Iris-versicolor 5.936 2.770 # 2 Iris-virginica 6.588 2.974
![Page 15: pysqldf](https://reader031.vdocuments.pub/reader031/viewer/2022022413/58ee5e2d1a28ab23098b4637/html5/thumbnails/15.jpg)
(*^^*)
![Page 16: pysqldf](https://reader031.vdocuments.pub/reader031/viewer/2022022413/58ee5e2d1a28ab23098b4637/html5/thumbnails/16.jpg)
ipython notebook
web版のインタラクティブシェル。グラフとか生成する場合に、出力した図がページに埋込まれるので見やすい。
操作履歴と出力結果がセットの状態で保存ができ、配布も簡単。
![Page 17: pysqldf](https://reader031.vdocuments.pub/reader031/viewer/2022022413/58ee5e2d1a28ab23098b4637/html5/thumbnails/17.jpg)
data science stack• ipython
• pandas + pysqldf
• matplotlib
• numpy + scipy
• statsmodels
• scikit-learn + scikit-image
![Page 18: pysqldf](https://reader031.vdocuments.pub/reader031/viewer/2022022413/58ee5e2d1a28ab23098b4637/html5/thumbnails/18.jpg)
DL数
![Page 19: pysqldf](https://reader031.vdocuments.pub/reader031/viewer/2022022413/58ee5e2d1a28ab23098b4637/html5/thumbnails/19.jpg)
みんなつかってくれ!
![Page 20: pysqldf](https://reader031.vdocuments.pub/reader031/viewer/2022022413/58ee5e2d1a28ab23098b4637/html5/thumbnails/20.jpg)
おわり