とある大手製造業の会社で「データサイエンティスト」として働いている筆者。
当然、データ分析業務は初めてなので、データの前処理も我流で行っていました。
そんな我流のデータ前処理を少しでも効率よく進めるために、「前処理大全」という書籍を読んでみましたので所感を記します。
「前処理大全」を読めば、
pythonやRなどのプログラミング言語で実現できる前処理を幅広く知ることができ、
かつ、きれいなデータ分析プログラムを知ることができます。
「前処理大全」を買った方が良い人
業務または趣味でデータ分析を行っているものの、データの前処理は我流で行っているという人は買って損はないです。
「前処理大全」には、pythonやRといったプログラミング言語で簡易に実現可能なデータ処理手法が説明されています。
ここで、簡易に実現可能というのは、データ処理手法がライブラリのAPIとして提供されており、少ないコード行数でデータ処理が実現できるという意味です。
つまり、「前処理大全」を購入するメリットとして、
- データの特徴に応じて、適したデータ処理手法を知ることができる
- データ処理手法を簡易に実現できるライブラリやAPIを知ることができる
が挙げられます。
「前処理大全」で特に勉強になったこと
私が「前処理大全」で特に勉強になったことは2つあります。
データ欠損に対する処理
私は、「前処理大全」に、データの欠損を適切に処理する方法を期待していました。
その期待に対して、「前処理大全」から下記のことを得ました。
- データ欠損には以下の3種類があり、種類に応じて欠損値の処理も変える必要がある
- MCAR
- MAR
- MNAR
- 欠損値を補完する方法は以下の6種類がある
- 定数による補完
- 集計値による補完
- 欠損していないデータに基づく予測値によって補完
- 時系列の関係から補完
- 多重代入法
- 最尤法
- 上記の6種類を実現するpython、Rの記述方法
一流のデータサイエンティストであれば知っていて当然の内容かもしれませんが、私にとっては初見のものが多く記載されており、私のデータ欠損に対する処理の引き出しを増やすことができました。
きれいなコードの書き方
「前処理大全」はきれいなコードの書き方をそうではない書き方を記載しています。
(きれいなコードをAwesome、そうではないコードをNot Awesomeと呼んでいる)
私が我流で書いていたコードの中に、見事にNot Awesomeなコードがありました。
例えば、pythonのpandasフレームワークで提供されるDataFrameから所望のデータを抽出したい場合、私の我流コードは以下のように記載していました。
dataframe[(dataframe['datetime'] >= '2019-01-01') & (dataframe['datetime'] < '2019-01-09')]
このコードはdataframeという変数名が3箇所出現しており、メンテナンス性が悪いです。またパッと見で読みづらく可読性も低いですね。
この書き方がそのままNot Awesomeとして紹介されていました。
Awesomeなコードとしては、
dataframe.query('"2019-01-01" <= datetime < "2019-01-09"')
になります。
query()という命令はSQLに馴染みがある人にとってはわかりやすいですね。
私は、DataFrameにquery()という命令が存在することを知らなかったため、今までNot Awesomeな書き方をしていました。
このような気づきも「前処理大全」を購入したメリットです。
「前処理大全」を購入してもわからないこと
当然ですが、データのドメイン知識が絡んでくる前処理は、「前処理大全」では教えてくれません。
例えば、数値型のデータ欠損を補完する場合、0で補完すべきか負の値で補完すべきか正の値で補完すべきかはデータによって違います。
そのあたりの前処理をうまくこなすには、データの中身を正確に理解し、どのように処理をするのが適切か自分で判断する必要があります。
処理の方針が決まった時点で、「前処理大全」で得た知識を活かした前処理を実施しましょう。
まとめ
「前処理大全」について書感を記しました。
こういった書籍を活用することでデータ分析のテクニックが向上することは間違いありません。
しかし、データ分析作業に入る前に、ドメイン知識の習得やデータ分析の目的を明確にする作業を適切に行わないと、良い成果は挙げられないなぁと最近しみじみ思います。。。
以上!!
コメント