web-dev-qa-db-fra.com

Python pandas: le meilleur moyen de normaliser les données?

J'ai un grand pandas dataframe avec environ 80 colonnes. Chacune des 80 colonnes dans le dataframe rapporte des statistiques de trafic quotidiennes pour les sites Web (les colonnes sont les sites Web).

Comme je ne veux pas travailler avec les statistiques brutes de trafic, j'aime plutôt normaliser toutes mes colonnes (sauf la première, qui est la date). Soit de 0 à 1 ou (encore mieux) de 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 ...

Cela étant dit, je me demande quelle normalisation appliquer. mise à l'échelle Min-Max vs. Normalisation z-Score (normalisation)? Certaines de mes colonnes ont de fortes valeurs aberrantes. Ce serait formidable d'avoir un exemple. Je suis désolé de ne pas pouvoir fournir les données complètes.

8
Rnaldinho

Tout d'abord, transformez votre colonne Date en index.

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

Utilisez ensuite la normalisation du score z:

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

ou mise à l'échelle min-max:

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

Je conseillerais probablement la normalisation du score z, car la mise à l'échelle min-max est très sensible aux valeurs aberrantes.

15
User191919