Python で解析 7
“Advent Calendar 2013 - Python で解析!” の七日目。matplotlib - 2
1. 準備
Notebook を使いたいところだが、ブログにコードを書くのにスクリーンショットでは都合が悪いので、ターミナルの ipython を使う。起動時に '--pylab=inline' を付けておくと、'show()' を実行しなくてもチャートが表示されて便利。
$ ipython --pylab=inline
今回は pylab もインポートしておく。
In [1]: import pandas as pd In [2]: import pylab as pl In [3]: import pandas as pd In [4]: df = pd.DataFrame({ ...: u'名前': [u'山田', u'鈴木', u'佐藤', u'木村'], ...: u'性別': [u'男', u'男', u'女', u'女'] , ...: u'身長': [181, 173, 159, 164], ...: u'体重': [79, 71, 51, 52] ...: }) In [5]: df Out[5]: 体重 名前 性別 身長 0 79 山田 男 181 1 71 鈴木 男 173 2 51 佐藤 女 159 3 52 木村 女 164
2. 散布図
データを手に入れたら 'とりあえず散布図' ということで。
In [6]: pl.scatter(df[u'身長'], df[u'体重']) Out[6]: <matplotlib.collections.PathCollection at 0x1077a2e90>
この散布図は Pandas でなくても matplotlib に配列を渡して表示できる。
なお、ipython の起動時に pylab を読み込んでいるので、'pl.scatter()' ではなく 'scatter()' として使うこともできるのだが、後々のことを考えて、どのモジュールの機能を使うのかが明らかである 'pl.scatter()' という書き方を選んでいる。
3. 散布図マトリックス
Pandas だとこれが便利。
In [7]: pd.scatter_matrix(df) Out[7]: array([[<matplotlib.axes.AxesSubplot object at 0x1077b9f50>, <matplotlib.axes.AxesSubplot object at 0x1078d28d0>], [<matplotlib.axes.AxesSubplot object at 0x1078f64d0>, <matplotlib.axes.AxesSubplot object at 0x1077c9310>]], dtype=object)