前処理大全でデータ分析の「下ごしらえ」を学習しました

前処理大全の表紙

前処理大全(←書籍です)を購入。前処理というデータ分析を行う上で重要な下ごしらえに特化した書籍を学習することにしました。(学習したのは結構前なのだけれど引越しやらなんやらで下書きのままだった。。。)

発売した時に一回立ち読みしてスルーしていましたが、電子版があるということを知り購入してみました。

ちなみに、技術評論社の公式サイトからPDF版を購入してます。AmazonのKindle版も用意されているのだけれど、固定レイアウトではないのでやめました。私は原本のレイアウトのまま読みたいタイプなのです。意外に技術評論社から購入した人って少ないかも。私はPaypalのクレジットカード決済を利用しました。普通に買えるので、固定レイアウト版が好みの方は、こういった出版社から購入できることもあるのでチェックしてみてください。

以下、前処理大全を学習してみた感想をだらだらと。(書評と言うほどではないです。笑)

前処理大全は3つの言語で解説されている

この書籍は、

  • SQL
  • R
  • Python

の3つの言語で解説されています。

私はSQLとPythonで学習を進めることにしました。Rは眺めるだけ。

できればRもやった方が良いと思います。ただ、RからPythonに移ってる会社も多いのは知っているので、とりあえずPythonだけにしました。時間があればRもやりたいところ。

データを扱えるように準備する

GitHubからサンプルコードがダウンロードできました。git cloneで引っ張ってきます。ブラウザからダウンロードしてもOKです。

書籍を買ってない人もサンプルコードは見れるので、気になる人はチェックしてみてください。
https://github.com/ghmagazine/awesomebook

次はデータの準備です。Pythonはcsvを読み込めば良いだけなので特に準備は必要なし。

SQLの方は、書籍だとAWSのRedshiftを準備するように書かれていましたが、面倒だったのでローカルのPostgreSQLにデータを入れました。

適当なデータベースを用意して、スキーマをworkで作って、その中にテーブルを作っていきます。サンプルのDDL(.sql)内のcreate tableのところだけ実行していきました。テーブルは全部で7個なので手動でやってもそんなに時間はかかりません。

postgreSQLなので書籍のコードのままだと動かないときもあります。例えばmedian関数とか。でもレアケースなので気になりませんでした。

これでSQLでデータを見れるようになりました。

学習スタート(感想)

正誤表があることを確認

地味に間違いが多いので、このページはチェックしておきましょう。

http://gihyo.jp/book/2018/978-4-7741-9647-3/support

解説のとおりにやってもうまくいかない → 実は解説が間違っていた、というパターンは精神的ダメージが大きいですよね。うまくいかないときは書籍の間違いも疑ってみましょう。笑

もうちょっとチェックしてから出版してほしかったなあ。

1日1〜3章ずつ学習

平日の夜に学習したので私にはこれくらいのペースが合ってました。実際にサンプルコードを打ち込んで結果を確認しながら進めました。

各章は以下のように構成されています。

  • 第1章 前処理とは
  • 第2章 抽出
  • 第3章 集約
  • 第4章 結合
  • 第5章 分割
  • 第6章 生成
  • 第7章 展開
  • 第8章 数値型
  • 第9章 カテゴリ型
  • 第10章 日時型
  • 第11章 文字型
  • 第12章 位置情報型
  • 第13章 演習問題

全部PyCharm上でやった

DBも接続できるし、SQL、Pythonも実行できるのでPyCharmが便利でした。すべて1画面ですむのでラクです。

前処理大全のPDFはMacの横に置いたiPadProに表示していました。

前処理大全の良かったところ

AwesomeとNot Awesome

良いコード(Awesome)、悪いコード(Not Awesome)が一緒に掲載されているのでわかりやすい。Webではよく見かける書き方も、よくよく考えてみたらわかりにくいよね、と気づかせてくれます。(例えば、query関数使った方がわかりやすいよね、とか。この書き方では変更に弱いからよくないよね、とか。)でも、途中からAwesomeばかりの掲載になるので、AwesomeとNot Awesomeを見比べながら学習をしていきたい人には向かないかも。

同じ処理を別々の言語でやってみる

SQLで書いて、その後同じ処理をPythonでも書くのが意外に楽しい。なぜかはよくわかないけれど楽しい。(注:私はRは飛ばしてます。)

データ分析でよくあるジャンルを網羅

自然言語や緯度経度の話は私には無縁の世界だったので勉強になりました。色々なトピックが1冊にまとめられているのは良いですね。これから使う機会があればこの前処理大全を見返そうと思いました。

総仕上げ & 変数の意図

最後の総仕上げの演習も面白かったです。最後の最後にどうしてこういう説明変数を置いたのかという説明があるのですが、すごく勉強になりました。どういう意図(仮説)を持って説明変数を作ったのかというコメントが書いてあります。データ分析のセンスにもつながるところで、非常に興味深かったです。ふと思ったのが、データ分析の事例を10個位出して、それぞれの事例でどういう説明変数を用意してモデリングしていったかという話で書籍を1冊書いてほしいなあと思ったり。めちゃくちゃ面白そう。そんな書籍はまだ無いと思うので。

前処理大全のまずますなところ

誤植地獄

この前処理大全は誤植というか間違いがチラホラあります。上でも書きましたが公式サイトの正誤表はチェックしておきましょう。正誤表にも載ってない間違いや、コードの表記ゆれもあります。例題の文章が間違っていることも。多少の誤植は許容できますが、少し多い気が。。もうちょっとチェックしてからリリースしてほしかったかも。正誤表が更新順なので、ページ順でも見れると学習しやすかったと思います。(正誤表内でもファイル名に間違いがあり切ない・・・)途中から「これ、誤植はないよね?」と疑心暗鬼になってしまったので、変に学習にブレーキがかかってしまい効率が悪くなってしまいました。

ノリ

言い回しがわかりにくい部分があります。もっとシンプルに説明してくれた方がわかりやすいなあと。回りくどいというか・・・もっと簡潔にわかりやすさを追求すれば、ある意味この分野では神本になった・・・かも?あと、著者のキャラクターが不明。。。ユーモアのあるお方だと思うのですが、急に文章のテイスト(ノリ)が変わるので戸惑いました。笑 そうなると表紙のデザインもミスマッチかも。最後にあるあとがきの「おわりに」を最初に読むとこの本のノリが分かると思うのでオススメです。

ちなみに10年戦えるデータ分析入門という書籍はめちゃくちゃわかりやすくて読みやすかったです。今でもたまにパラパラ読み返します。この著者の文体は非常に読みやすかったです。(内容は基礎的なことが多めです。でも良書です。)

パッケージのインストール方法

私は別にどうも思わなかったのだけれど、もしかしたら気になる人もいるかもしれないので。

前処理大全ではサードパーティのパッケージのインストールについての解説はないです。自分でなんとかする必要があります。ほとんどは pip install 〇〇 で大丈夫なので、ちょっと調べればなんとかなると思います。

おわりに

4日程度で学習完了しました。私はRについては省きましたが、SQL、Pythonに関してはすべてのコードを打ち込んで動作を確認しました。

この前処理大全、全体を通して楽しく学習できました。実は知っていることも多かったのですが、体系的に前処理を学習できたのは大きいです。なんとなくでも頭に前処理というジャンルのマッピングができたことが私にとって価値がありました。とても意味のある4日間でした。前処理でポピュラーな3言語(SQL、R、Python)でのポイントを1冊にまとめたというのがミソですね。だれもやりたがらないだろうし。

今回の学習ではSQLとPythonだけやって、Rは飛ばしたということもあってか意外にサクサク学習が進みました。本屋で実物の書籍を見たときは「分厚いし大変そうだな・・・」と思ってたのですが、実際やってみるとそうでもなかったので、もしこの前処理大全が少しでも気になっているなら、とりあえずチャレンジしてみるのもありだと思いました!

あるといいな・・・(願望)

上で書いたことの繰り返しになりますが、「どういう意図でこの説明変数を用意したか」の解説にフォーカスした書籍を出してくてたら神!データ分析のセンスを学ばせてほしい!タイトルは『データ分析のセンス 〜プロは説明変数で差をつける〜』という感じで!(タイトルのセンスがないぞ!笑)