2016-10-22 13 views
6

私は約80列の大きなパンダのデータフレームを持っています。データフレーム内の80列のそれぞれは、Webサイトの1日のトラフィック統計を報告します(列はWebサイトです)。Python pandas:データを正規化する最良の方法は?

生トラフィック統計情報を使用したくないので、私はむしろ、すべての列を正規化することをお勧めします(最初の日付を除く)。 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 ... 

これは、どの正規化を適用するのかと思います。 Min-Max scaling対zスコア正規化(標準化)?私の列の中には強いアウトライヤーがあります。例があることは素晴らしいことです。完全なデータを提供できないのは残念です。

答えて

14

まず、日付列をインデックスに変換します。その後

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

のいずれかのzスコアの正規化を使用します。

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

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

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

を最小 - 最大スケーリングがあるので、私はおそらく、Zスコアの正規化を助言します異常値に非常に敏感です。

+0

異常値が私の知覚に対してあまりにも強すぎる場合は、min-maxを推奨しますか? – Rnaldinho

+0

また、私はこれを試しました。残念ながら、値は0〜1または0〜1ではなく、-3〜1の範囲です。小数点もあるはずですか? – Rnaldinho

+0

強い外れ値があり、解析前にデータセットからそれらを削除したくない場合は、zスコアの正規化をお勧めします。 – User191919

関連する問題