Comment calculer le pourcentage cumulatif chez les pandas



Vous pouvez utiliser la syntaxe de base suivante pour calculer le pourcentage cumulé de valeurs dans une colonne d’un DataFrame pandas :

#calculate cumulative sum of column
df['cum_sum'] = df['col1'].cumsum()

#calculate cumulative percentage of column (rounded to 2 decimal places)
df['cum_percent'] = round(100*df.cum_sum/df['col1'].sum(),2)

L’exemple suivant montre comment utiliser cette syntaxe dans la pratique.

Exemple : Calculer le pourcentage cumulé chez les pandas

Supposons que nous ayons le DataFrame pandas suivant qui montre le nombre d’unités qu’une entreprise vend au cours d’années consécutives :

import pandas as pd

#create DataFrame
df = pd.DataFrame({'year': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
                   'units_sold': [60, 75, 77, 87, 104, 134, 120, 125, 140, 150]})

#view DataFrame
print(df)

   year  units_sold
0     1          60
1     2          75
2     3          77
3     4          87
4     5         104
5     6         134
6     7         120
7     8         125
8     9         140
9    10         150

Ensuite, nous pouvons utiliser le code suivant pour ajouter une colonne qui affiche le nombre cumulé d’unités vendues et le pourcentage cumulé d’unités vendues :

#calculate cumulative sum of units sold
df['cum_sum'] = df['units_sold'].cumsum()

#calculate cumulative percentage of units sold
df['cum_percent'] = round(100*df.cum_sum/df['units_sold'].sum(),2)

#view updated DataFrame
print(df)

   year  units_sold  cum_sum  cum_percent
0     1          60       60         5.60
1     2          75      135        12.59
2     3          77      212        19.78
3     4          87      299        27.89
4     5         104      403        37.59
5     6         134      537        50.09
6     7         120      657        61.29
7     8         125      782        72.95
8     9         140      922        86.01
9    10         150     1072       100.00

Nous interprétons les pourcentages cumulés comme suit :

  • 5,60 % de toutes les ventes ont été réalisées au cours de la première année.
  • 12,59 de toutes les ventes ont été réalisées au cours des années 1 et 2 combinées.
  • 19,78 % de toutes les ventes ont été réalisées au cours des années 1, 2 et 3 combinées.

Et ainsi de suite.

Notez que vous pouvez simplement modifier la valeur dans la fonction round() pour modifier également le nombre de points décimaux affichés.

Par exemple, nous pourrions plutôt arrondir le pourcentage cumulé à zéro décimale :

#calculate cumulative sum of units sold
df['cum_sum'] = df['units_sold'].cumsum()

#calculate cumulative percentage of units sold
df['cum_percent'] = round(100*df.cum_sum/df['units_sold'].sum(),0)

#view updated DataFrame
print(df)

   year  units_sold  cum_sum  cum_percent
0     1          60       60          6.0
1     2          75      135         13.0
2     3          77      212         20.0
3     4          87      299         28.0
4     5         104      403         38.0
5     6         134      537         50.0
6     7         120      657         61.0
7     8         125      782         73.0
8     9         140      922         86.0
9    10         150     1072        100.0

Les pourcentages cumulés sont désormais arrondis à zéro décimale.

Ressources additionnelles

Les didacticiels suivants expliquent comment effectuer d’autres opérations courantes en Python :

Comment créer des tableaux de fréquences en Python
Comment calculer la fréquence relative en Python

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *