最近、Pythonを使って機械学習を勉強しているがnumpyやpandas, グラフ作成辺りの体系的な知識が足りない気がしていたので、この辺りをまとめた本「Python for Data Analysis (第2版)」を読んだ。感想としてはもっと早くに読んでおくべきだったと思う。今まで何となく書いていたnumpyやpandasが割と頭の中で整理できたと思う。
日本語版は第1版の翻訳が出ているようだ。Amazonのレビューを見ると第1版はPython2系列で書かれており、今読むとしたら内容が古いのでオススメはしない。第2版ではPython3で書かれている。
以下に学んだことをピックアップしておく。
- IPythonでは変数の後に「?」をつけると変数の情報が見れる
- リストに要素を逐次的に追加していく場合、extendメソッドを使った方が要素を結合するよりも速い
- arr2d[0][2]とarr2d[0,2]は同じ意味。
- ffillメソッドで前方向のinterpolationができる
- 大きなCSVファイルをpandasで読み込む際には、read_csv()にchunksizeを指定して処理していく
- データ分析において前処理にかかる時間は全体の80%くらいという報告がある
- Jupyter notebookではplotの設定がセル毎なので複雑なプロットは一つのセルにコマンドをまとめて書く必要がある
- plot.kde()でカーネル密度推定をグラフにプロットすることが出来る
- pandasのrolling()メソッドを使うことで、Moving Window Averageが取れる
- 時系列データ分析では、exponentially weighted functionsが最近のデータに大きい重みをつける手法としてよく使われる
- 特定の値しかとらないデータカラムはcategory型にすると使用するメモリが減って、機械学習の処理の高速化を見込める
- DataFrameをNumPy配列に変換するにはdata.values
- Pythonの関数を高速化する手法としてnumbaがある。numba.jit()を使うことで関数をJITコンパイルできる
最後の章に、この本よりもさらに学ぶのにオススメの本が挙げられている。「Hands-On Machine Learning with Scikit-Learn and TensorFlow」は読んだことがあるが、とても分かりやすく、特にこの本でnumpyやpandasを学んでからならすんなりと機械学習の手法を理解することが出来ると思う。読んだ際の感想はこちら。Hands-On Machine Learning with Scikit-Learn and TensorFlow: Concepts, Tools, and Techniques to Build Intelligent Systems を読んだ
紹介されている次に読むべきオススメの本: