Slide 1

Slide 1 text

データサイエンス100本ノック(構造化データ加工編)  No1~40までをSQLで書いてみて   Machine learning 技術情報共有会 Takumu Wakamatsu Date 2022.06.21

Slide 2

Slide 2 text

取り組んだ理由 最近仕事でGoogle Data portalを活用した案件を担当 ➢ Data portalとの連携上、Google Big Queryを活用する機会も増えた ➢ pythonに比べ使いやすいケースも結構ある ➢ その一方、複雑な処理になると、コーディングが難しい ● SQLの練習ができつつも、その他の言語との比較をして、適切なタイミング でBig Queryを使えるようになりたい!

Slide 3

Slide 3 text

本書に関して 2020年にデータサイエンティスト協会 が、GitHub上に公開 2022年の1月にソシム社から「データサ イエンス100本ノック構造化データ加工編ガイ ドブックが発売され、こちらを購入し て、実施中 https://digitalpr.jp/r/39499

Slide 4

Slide 4 text

構成と進捗 https://github.com/The-Japan-DataScientist-Society/100knocks-preprocess/blob/master/docker/doc/100knocks_guide.pdf 6/12(日)から初めて、1〜40まで実施(No7の途中まで、疲れてできない日もあり) →SQLのみで実施(解答見るときに、pythonコードもたまにみてる)

Slide 5

Slide 5 text

構築したい方は以下で https://github.com/The-Japan-DataScientist-Society/100knocks -preprocess/blob/master/docker/doc/100knocks_guide.pdf

Slide 6

Slide 6 text

実際やってみて

Slide 7

Slide 7 text

感想 ● 基礎統計量(最大、平均とか)をサクッと出す分には、SQLの方が書きやすい ● 一方、複雑な結合とかに当たると、SQLの場合サブクエリが長くなったり、連 携がやりにくかったりするので、記述量が多くなるので、python(で実装され ているpandasの処理)の方が良さげ ● 趣味程度にやる分だと、楽しい ● Dockerの環境に触れられるので、知見が広がった

Slide 8

Slide 8 text

SQLが楽な場合 SQL python S-024: レシート明細データ(receipt)に対し、顧客ID(customer_id)ごとに最も新しい売上年月日(sales_ymd)を求め、10件表示せよ。

Slide 9

Slide 9 text

SQLが面倒な場合 SQL python P-038: 顧客データ(df_customer)とレシート明細データ(df_receipt)から、顧客ごとの売上金額合計を求め、10件表示せよ。ただし、売上実績がない 顧客については売上金額を0として表示させること。また、顧客は性別コード(gender_cd)が女性(1)であるものを対象とし、非会員(顧客IDが"Z"から 始まるもの)は除外すること。

Slide 10

Slide 10 text

今後に関して 本書に関して ● 6月末を目処に、SQLに関して、100問全てやり切るのを目標 ● 実務で使える場面も多いので、サンプルコードで蓄積しておきたい(特に基 礎統計量のあたりとかは) ● 暇なので、オラクルのSQLがらみの検定とかは受けてみたい(ただし、お金が高 い)

Slide 11

Slide 11 text

実務で使いたい方(参考) データベースの構築は厳しいと思うので、 Google Big Queryが個人的にはオススメ ● csvがローカルからのアップロードが可能 な他、S3やドライブからもアップロード 可能 ● 社内だと、csvデータの処理が現状多いで すが、サクッとデータ切り出したい時は pythonよりは楽(と思う) ○ ただしカラム表記が日本語対応していないの が、欠点 uery-create-table-by-local-file-upload/