pythonによるデータ分析入門を写経していく(その3)
- この本
データの縦横変換と集約
pandas.unstack()
http://pandas.pydata.org/pandas-docs/version/0.13.1/generated/pandas.DataFrame.unstack.html
In [177]: by_tz_os.size().unstack(1) Out[177]: not_windows windows tz 245 276 Africa/Cairo NaN 3 Africa/Casablanca NaN 1 Africa/Ceuta NaN 2 Africa/Johannesburg NaN 1 In [179]: by_tz_os.size().unstack(0) Out[179]: tz Africa/Cairo Africa/Casablanca Africa/Ceuta \ not_windows 245 NaN NaN NaN windows 276 3 1 2
ちなみに逆の
stack()
もあって、これは1列にまとめるメソッドIn [180]: by_tz_os.size().unstack().stack() Out[180]: tz not_windows 245 windows 276 Africa/Cairo windows 3 Africa/Casablanca windows 1 Africa/Ceuta windows 2 Africa/Johannesburg windows 1 Africa/Lusaka windows 1 America/Anchorage not_windows 4 windows 1 America/Argentina/Buenos_Aires not_windows 1 America/Argentina/Cordoba windows 1
Rでも同じようなメソッドがあるみたい
- http://monge.tec.fukuoka-u.ac.jp/R_analysis/basic_data_frame01.html
- なんかのパッケージがあったような気がしたけど、忘れた・・・
ソートして、ソート順番を返す
- numpyの
argsort()
を使うhttp://docs.scipy.org/doc/numpy/reference/generated/numpy.argsort.html
>>> x = np.array([3, 1, 2]) >>> np.argsort(x) array([1, 2, 0])
- って言う感じ
- 配列に
argsort()
を使う場合、axisのパラメータで縦か横かの順番の指定ができる参考:http://turbare.net/transl/scipy-lecture-notes/intro/numpy/operations.html#basic-reductions
In [190]: x = np.array([[3,1], [10, 2]]) In [191]: x Out[191]: array([[ 3, 1], [10, 2]]) In [192]: x.argsort(axis=1) Out[192]: array([[1, 0], [1, 0]]) In [194]: x.argsort(axis=0) Out[194]: array([[0, 0], [1, 1]])
積み上げ棒グラフ
kindでbarhを指定すると棒グラフで、stackedで積み上げ
In [204]: count_subset.plot(kind='barh',stacked=True) Out[204]: <matplotlib.axes.AxesSubplot at 0x109136190>
正規化
- 下記のようなデータの行ごとの合計値をだして
count_subset.sum(1)
、 - その合計値で、各セルのデータを割って、パーセント化する
データフレームの縦に対して行うのか、横に対して行うのか、axisの概念が把握できてない・・・
not_windows windows tz America/Sao_Paulo 13 20 Europe/Madrid 16 19
In [205]: normed_subset = count_subset.div(count_subset.sum(1),axis=0)
ふたたびplot
In [206]: normed_subset.plot(kind='barh',stacked=True)
Out[206]: <matplotlib.axes.AxesSubplot at 0x1091c71d0>
ようやく2章の前半、終了・・・
- アジャイルデータサイエンスが気になってます。はやくこの本、終わらせないと。