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

会社で分析業務を行う際、SQLを書いて可視化というよりかは、もうすこし楽な手段がないか探していた。
社内ではjupyterhubの環境があるが、実はjupyter notebookを今まで触ったことがなかったので、心理的ハードルが高い状態にあった。

かんたんな分析ができるようになるまでのロードマップ

1. jupyter notebookに慣れる
2.データインポートのやり方を知る
3.pandasの使い方を知る
4.可視化を知る

という感じで道のりを考えた。

とりあえず、下記の本を読んで写経していると,pandasの扱い方がわからないとなんともわからんなと思った。

良い教材を探していたら、こちらを見つけたので取り組むことに決めた。

開始日が1月16日 100本ノック終了日が2月14日なので、一日最低一問でも一ヶ月かかっている。。。が、やり遂げられただけでも良しとする。

ただ、Docker環境を建てるのがだるかった&Google Colabのほうがスキマ時間にスッとできることを垣間見て、下記を参考にGoogle Colabでやることにした。

履歴




感想

会社の分析業務と並行でやっていたので、「そう!これが知りたかったんだけど検索の仕方がわからなかったんだよね」と出会えたのがでかい。



例:
抱いた疑問

時系列をずらして数を数えるには?

参考にできそうな問題

P-074: レシート明細データフレーム(df_receipt)の売上日(sales_ymd)に対し、当該週の月曜日からの経過日数を計算し、売上日、当該週の月曜日付とともに表示せよ。結果は10件表示させれば良い(なお、sales_ymdは数値でデータを保持している点に注意)。

抱いた疑問
全体の平均だったら出せそうだけど、各商品の場合はどうしたらいいんだろう?

参考にできそうな問題

P-064: 商品データフレーム(df_product)の単価(unit_price)と原価(unit_cost)から、各商品の利益率の全体平均を算出せよ。 ただし、単価と原価にはNULLが存在することに注意せよ。

抱いた疑問
ぐあ〜〜データに外れ値がある!どうやって処理をしよう?

参考にできそうな問題

P-078: レシート明細データフレーム(df_receipt)の売上金額(amount)を顧客単位に合計し、合計した売上金額の外れ値を抽出せよ。ただし、顧客IDが"Z"から始まるのものは非会員を表すため、除外して計算すること。なお、ここでは外れ値を第一四分位と第三四分位の差であるIQRを用いて、「第一四分位数-1.5×IQR」よりも下回るもの、または「第三四分位数+1.5×IQR」を超えるものとする。結果は10件表示させれば良い。


まとめ

今年は、幅を広げるために統計学を独学して、二級を受験するもギリギリで落ちたり、

意味もなくKaggle本を読んで写経したり(ただの興味)でやっていたが、事前にこういう土台作りをやってたおかげで、業務で分析やってみたいなという気持ちを、あれとこれがわかれば実現できそうという段階が見えるようになった。

統計学2級程度は直接的には役に立ってはいないが、唐突に第一四分位数、正規化、標準偏差の用語が出てきたときにイメージがつく、怖がらなくてよくなったというのが成果かなと思う。

意外と昔やったことが、つながってくるのが面白いところだと思う。

知識の裾野を広げると、見えてくるものが違うというのが昨年のわかったことだった。今後も未知の分野に積極的にチャレンジしたい。

この記事が参加している募集

エンジニアとして働いている成長記録やおもしろいと思ったこと色々書いていこうとおもいます 頂いたご支援は、資料や勉強のための本、次のネタのための資金にし、さらに面白いことを発信するために使います 応援おねがいします