静かなる名辞

pythonとプログラミングのこと



【python】pandasでデータを標準得点(z得点)に変換

 データの正規化(標準化)をpandasでもやってみる。

 正規化、標準化とは、データを分散1、平均0に変換する操作である。

 自分で書いてもできるが、scipyの関数を使うと簡単にできる。

>>> import pandas as pd
>>> df = pd.DataFrame([[1,2,3,4,5,6],
                       [6,5,4,3,2,1],
                       [0,1,2,3,4,5],
                       [5,4,3,2,1,0]], columns=[*"ABCDEF"])
>>> df.apply(stats.zscore, axis=0)
          A         B         C         D         E         F
0 -0.784465 -0.632456  0.000000  1.414214  1.264911  1.176697
1  1.176697  1.264911  1.414214  0.000000 -0.632456 -0.784465
2 -1.176697 -1.264911 -1.414214  0.000000  0.632456  0.784465
3  0.784465  0.632456  0.000000 -1.414214 -1.264911 -1.176697
>>> df.apply(stats.zscore, axis=1)
         A        B        C        D        E        F
0 -1.46385 -0.87831 -0.29277  0.29277  0.87831  1.46385
1  1.46385  0.87831  0.29277 -0.29277 -0.87831 -1.46385
2 -1.46385 -0.87831 -0.29277  0.29277  0.87831  1.46385
3  1.46385  0.87831  0.29277 -0.29277 -0.87831 -1.46385

 axis=0だと列で計算した標準得点、axis=1で行で計算した標準得点になる。