ck_fm0211のブログ

書きたいことを書く。

『データサイエンス100本ノック(構造化データ加工編)』をやってみた(SQL)

データサイエンス100本ノック(構造化データ加工編)をやってみたのでその感想など。
データエンジニアを(一応)名乗っているので、それなりにできないとまずいかなと思い挑戦。
いうてパイプライン作る側の人なのでゴリゴリの分析SQLを投げたりするわけではないのだけれど、分析基盤のユーザーの気持ちを少しでも分かりたいなと思ったので。

ちなみに挑戦したのはSQL版。いずれ他言語もやってみよう。
github.com

準備

READMEに書いてあるとおり、

git clone [Repository URL] ※
cd 100knocks-preprocess
docker-compose up -d --build

でOK。ちなみに止めるときは↓。

# 一時中断のとき
docker-compose stop
# 再開するとき
docker-compose start

# 完全に終わりたいとき
docker-compose down

ローカルPCでやらなくてもGoogle Colabとかでやる方法もある。 qiita.com

感想など

金曜の終業後〜日曜日の計3日間で終わった。結構なボリュームだと思ったが、まあこんなもんか。



普段の業務で「こういうときどうしたらいいんだろう?」みたいなのがたまにあったりするけど、その回答が見つけられたように思う。

例:
- 時系列データに対して日付をずらしながら集計するには?
- カテゴリごとにランダム抽出するには?
- 欠損値はどう扱う?



DBはPostgreSQLなので、方言とか「そんな関数あったんかい!」みたいなのはあるけどまあそこは本質ではないのであまり気にしない。
SQLでどう表現すればいいんだろう?を悩む感じだった。



データ型がまばらなのもリアルでいいなと思った。日付データがINT型だったりVARCHAR型だったり。
実際の業務でもそういうの結構あったりする。
E-R図があるので、設問によっては参照しないとどうしようもなかった。メタデータって重要。



たまに標準偏差とか第一四分位数とか統計用語出てくるあたりはさすがはデータサイエンティスト協会って感じ。
そのへんの知識とか正しい理解とかが足りてないかなと思うところもあるので、いずれ勉強したいなあ。





チームメンバーとかが増えたときとか、これを使ってその人のスキルレベルを測ることもできそうだなと思った。
そうでなくてもオンボーディングに組み込むとかも良さそう。

ちなみにデータサイエンティストのスキルチェックリスト(ビジネス力・データサイエンス力・データエンジニアリング力)もあったりして、これまた有用そうだなと思った。 github.com