データの正規化(標準化)を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で行で計算した標準得点になる。