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

  • 853
    Like
  • 2
    Comment

この記事について

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