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