web-dev-qa-db-ja.com

Python pandas:データを正規化する最良の方法?

pandas約80列のデータフレームがあります。データフレームの80列のそれぞれがWebサイトの毎日のトラフィック統計を報告します(列はWebサイトです)。

生のトラフィック統計を処理したくないので、すべての列を正規化したいと思います(最初の日付を除く)。 0から1または(さらに)0から100のいずれか。

Date        A      B      ...
10/10/2010  100.0  402.0  ...
11/10/2010  250.0  800.0  ...
12/10/2010  800.0  2000.0 ...
13/10/2010  400.0  1800.0 ...

とはいえ、どの正規化を適用すればよいのでしょうか。 最小-最大スケーリング 対z-スコア正規化(標準化)?一部の列には強い外れ値があります。例があるといいですね。完全なデータを提供できず、申し訳ありません。

8
Rnaldinho

まず、Date列をインデックスに変換します。

dates = df.pop('Date')
df.index = dates

次に、Zスコアの正規化を使用します。

df1 = (df - df.mean())/df.std()

または最小-最大スケーリング:

df2 = (df-df.min())/(df.max()-df.min())

Min-maxスケーリングは外れ値の影響を非常に受けやすいため、zスコアの正規化をおそらくお勧めします。

15
User191919