Normaliser chaque ligne d'une DataFrame Pandas en pourcentages est une étape intéressante à prendre lors de l'analyse des données. En normalisant les données, nous pouvons facilement comparer les valeurs entre différentes lignes et mieux comprendre l'importance relative de chaque valeur dans le jeu de données.
Créer des données synthétiques.
import pandas as pdimport numpy as npnp.random.seed(42)data = np.random.random_sample((6, 2)) * 10df = pd.DataFrame(data,columns=['A','B'])
donne
A B0 3.745401 9.5071431 7.319939 5.9865852 1.560186 1.5599453 0.580836 8.6617614 6.011150 7.0807265 0.205845 9.699099
Donc, le but ici est de normaliser chaque ligne de la DataFrame en pourcentages.
Étape 1 : Additionner individuellement les lignes
Pour ce faire, nous devons d'abord diviser chaque valeur d'une ligne par la somme de toutes les valeurs de cette ligne. Cela nous donnera un nombre compris entre 0 et 1, représentant le pourcentage de chaque valeur par rapport au total de cette ligne.
df.sum(axis=1)
donne
0 13.2525441 13.3065242 3.1201323 9.2425984 13.0918765 9.904943dtype: float64
Étape 2 : Diviser chaque ligne par la somme
df[['A','B']].div(df.sum(axis=1), axis=0)
donne
A B0 0.282618 0.7173821 0.550102 0.4498982 0.500039 0.4999613 0.062843 0.9371574 0.459151 0.5408495 0.020782 0.979218
Étape 3 : Multipliez par 100
Nous multiplions ensuite par 100 pour obtenir une valeur en pourcentage.
df[['A','B']].div(df.sum(axis=1), axis=0) * 100
Cela créera une nouvelle DataFrame, chaque ligne représentant le pourcentage de chaque valeur dans la DataFrame d'origine. Maintenant, nous pouvons facilement comparer les valeurs entre différentes lignes et mieux comprendre l'importance relative de chaque valeur dans l'ensemble de données.
A B0 28.261752 71.7382481 55.010153 44.9898472 50.003865 49.9961353 6.284339 93.7156614 45.915117 54.0848835 2.078204 97.921796
Dataframe normalisée et arrondi
(df[['A','B']].div(df.sum(axis=1), axis=0) * 100).round(2)
donne
A B0 28.26 71.741 55.01 44.992 50.00 50.003 6.28 93.724 45.92 54.085 2.08 97.92
Références
| Liens | Site |
|---|---|
| pandas.DataFrame.sum | pandas.pydata.org |
| pandas.DataFrame.div | pandas.pydata.org |
