2016-10-22 40 views
6

Yaklaşık 80 sütun içeren büyük bir panda veriim var. Veri çerçevesindeki 80 sütunun her biri, web siteleri için günlük trafik istatistiklerini raporlar (sütunlar web siteleridir).Python pandas: Verileri normalleştirmek için en iyi yol?

Ham trafik istatistikleriyle çalışmak istemediğim için, tüm sütunlarımı normalleştirmek istiyorum (ilk olan tarih hariç). Ya 0 ila 1 ya da (daha iyi) 0'dan söyleniyor

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 ... 

100. ila ben uygulamak için hangi normalleştirme merak ediyorum. Min-Max scaling vs z-Skor Normalleştirme (standardizasyon)? Bazı sütunlarımın güçlü farkı var. Bir örneğe sahip olmak harika olurdu. Tam veriyi veremediğim için üzgünüm.

cevap

14

Önce, Tarih sütununuzu bir dizine dönüştürün. Sonra

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

da kullanan z-skoru normale:

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

veya min-max ölçekleme: min-max ölçekleme çünkü

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

Muhtemelen z-skor normalleşmesini tavsiye ediyorum aykırı değerlere oldukça duyarlıdır.

+0

Aykırı değerlerin benim algı için çok güçlü olması durumunda, o zaman min-max'ı önerir misiniz? – Rnaldinho

+0

Ayrıca, bunu denedim. Maalesef, değerler 0 ile 1 veya 0 ile 1 arasında değil, 3 ile 1 arasında değişiyor. Onda da ondalık olmalı? – Rnaldinho

+0

Herhangi bir güçlü aykırı değer varsa ve bunları analizden önce veri kümesinden kaldırmak istemiyorsanız, z-skor normalleştirmesi yapmanızı öneririm. – User191919