Python
機械学習
データ分析
Jupyter
データサイエンティスト

Pythonでデータ分析するのに必要なツールのまとめ

More than 1 year has passed since last update.


この記事について

Pythonでデータ分析を行う際に役立つセットアップを紹介します。

データ分析に興味がある方はこちらも合わせてどうぞ

データサイエンティストに興味があるならまずこの辺りを見ておきな、って文献・動画のまとめ(随時追加) - Qiita


実行環境


Jupyter(旧iPython Notebook)

http://jupyter.org/

インタラクティブ(対話的)なコード実行のための環境

データ分析に非常に適していて、慣れると他のIDEなどでは分析ができなくなる。

任意に分けたコードブロックごとに実行し、結果を都度表示出来るほか、

・グラフのインライン表示

・数式の記述(Latex)

・マークダウン方式の文章記載

などの機能を備えており、模索しながらの分析作業や、結果の共有・保管などに非常に適する。

iPythonで文章と図表を描くことで論文のような形式で書くことも出来るため、科学術業界でも多用されている。

image

複数人で使うためのjupyterhubというプロダクトもある。

https://github.com/jupyter/jupyterhub


その他の選択肢

Google Cloud Datalab

https://cloud.google.com/datalab/?hl=ja

JupyterをベースにしたGoogle Cloudのデータ探索用フロントエンド

参考 : Python使いのためのBigQuery連携 - Qiita

beaker notebook

http://beakernotebook.com/

Apache Zeppelin

https://zeppelin.incubator.apache.org/


ライブラリ


数値計算、データ操作


Numpy

http://www.numpy.org/

Pythonの組み込みのListに比べて、配列同士の演算や多次元配列(行列計算)などの扱いに

長けたオブジェクトを提供するライブラリ

Numpyの配列(Numpy Array)の集合体が次で紹介するPandasのデータフレームオブジェクトになる

NumpyとPandasの使い方についてはこの本に詳しい


Pythonによるデータ分析入門――NumPy、pandasを使ったデータ処理

http://www.oreilly.co.jp/books/9784873116556/



Pandas

http://pandas.pydata.org/

PythonでデータをRDBっぽい形(データフレーム)で扱うためのライブラリ

データ分析のスタンダードになっており、ScikilearnやMatplotlibも

Pandasオブジェクトとの連携がスムーズにされている

image

解説記事


Python Pandasでのデータ操作の初歩まとめ

http://qiita.com/hik0107/items/d991cc44c2d1778bb82e



Scipy

http://docs.scipy.org/doc/scipy/reference/

科学計算・技術計算のためのライブラリ

特殊関数、最適化、統計処理などの各種手法が含まれている(かなり数多い)

関数近似をするためのscipy.optimizeの例(qiita記事)


Pythonで非線形関数モデリング

http://qiita.com/hik0107/items/9bdc236600635a0e61e8



データ連携


csv

http://docs.python.jp/2/library/csv.html#module-csv

csvの読み込みや処理、操作などに便利なライブラリ

csvファイルのリーダーやライターを提供する


db接続

MySQL, PostgreSQL、BigQuery、SQLiteなどの各種DBとの接続用のライブラリが存在する

※ここで紹介するコネクターは複数存在します。

MySQL : MySQL-Connector-Python

https://pypi.python.org/pypi/mysql-connector-python/

PostgreSQL : Pycopg2

http://initd.org/psycopg/download/

BigQuery : BigQuery-Python

https://github.com/tylertreat/BigQuery-Python

もしくはPandasを使った方法はこちらを参照

http://qiita.com/hik0107/items/3944ccea04371331c3b4

SQLite : SQLite3(組み込みのためインストールは不要)

http://docs.python.jp/2/library/sqlite3.html


簡易分析


pivottablejs

https://pypi.python.org/pypi/pivottablejs

Pandasオブジェクトを受け取って、Excelのピボットテーブルのような操作を可能にするライブラリ

簡単な集計やデータの確認をしたい時に重宝する

image


collections(組み込み関数)

http://docs.python.jp/2/library/collections.html

Count Distinct的な使い方が出来る"Counter"やデータフレームの簡易版的なオブジェクトが設計可能な"namedtuple"などの関数が入っているモジュール


モデリング(機械学習)


scikitlearn

http://scikit-learn.org/

分類や予測のためのモデルが詰まった機械学習用パッケージ

こちらもPythonでのデータ分析ではほぼデファクトと言っても良い地位を得ている

image


グラフ描画


matplotlib (+ seaborn)

http://matplotlib.org/

http://stanford.edu/~mwaskom/software/seaborn/

matplotlibは事実上Pythonのデータビジュアライズのデファクトとなっているツールで、

seabornはそのラッパー的な存在で、より簡単にキレイなグラフが描けるようになる

折れ線グラフ、棒グラフ、ヒストグラム、散布図などはもちろん、様々なグラフが存在する

Qiitaの記事


pythonで美しいグラフ描画 -seabornを使えばデータ分析と可視化が捗る

http://qiita.com/hik0107/items/3dc541158fceb3156ee0


image


その他の選択肢

いずれも高機能なグラフ化ツール

matplotlibが気に入らない人、満足できない人、元R使いなどの人はこちらもどうぞ

・Bokeh http://bokeh.pydata.org/en/latest/

・ggplot(Rのggplogt2というライブラリのPython版) http://ggplot.yhathq.com/

・plotly https://plot.ly/


その他


計算高速化:Cython

http://cython.org/

一部のPythonコードをCコードにコンパイルして高速実行する

計算量が多くスピードがネックになる時に有用


記号計算:sympy

http://www.sympy.org/en/index.html


日付の操作と演算:datetime

http://docs.python.jp/2/library/datetime.html


こちらの記事も

そろそろデータサイエンティストの定義とスキルセットについて本気で考えてみる

http://qiita.com/hik0107/items/f9bf14a7575d5c885a16