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)


今回はこんなところで。