Comment calculer le nombre cumulatif chez les pandas
Vous pouvez utiliser les méthodes suivantes pour calculer un nombre cumulé dans un DataFrame pandas :
Méthode 1 : Comptage cumulatif par groupe
df['cum_count'] = df.groupby('col1').cumcount()
Méthode 2 : compte cumulatif par plusieurs groupes
df['cum_count'] = df.groupby(['col1', 'col2']).cumcount()
Les exemples suivants montrent comment utiliser chaque méthode en pratique avec le DataFrame pandas suivant :
import pandas as pd #create DataFrame df = pd.DataFrame({'team': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'], 'position': ['G', 'G', 'G', 'F', 'G','G', 'F', 'F'], 'points': [14, 22, 25, 34, 30, 12, 10, 18]}) #view DataFrame print(df) team position points 0 A G 14 1 A G 22 2 A G 25 3 A F 34 4 B G 30 5 B G 12 6 B F 10 7 B F 18
Exemple 1 : Comptage cumulatif par groupe chez Pandas
Nous pouvons utiliser la syntaxe suivante pour créer une nouvelle colonne appelée team_cum_count qui affiche le nombre cumulé de chaque équipe dans le DataFrame :
#calculate cumulative count by team
df['team_cum_count'] = df.groupby('team').cumcount()
#view updated DataFrame
print(df)
team position points team_cum_count
0 A G 14 0
1 A G 22 1
2 A G 25 2
3 A F 34 3
4 B G 30 0
5 B G 12 1
6 B F 10 2
7 B F 18 3
La nouvelle colonne appelée team_cum_count contient le nombre cumulé de chaque équipe , en commençant par une valeur de zéro.
Si vous souhaitez que le décompte commence à un, ajoutez simplement un à la fin de la ligne :
#calculate cumulative count (starting at 1) by team
df['team_cum_count'] = df.groupby('team').cumcount() + 1
#view updated DataFrame
print(df)
team position points team_cum_count
0 A G 14 1
1 A G 22 2
2 A G 25 3
3 A F 34 4
4 B G 30 1
5 B G 12 2
6 B F 10 3
7 B F 18 4
La nouvelle colonne appelée team_cum_count contient le nombre cumulé de chaque équipe , en commençant par la valeur un.
Exemple 2 : calculer le nombre cumulatif par groupe dans Pandas
Nous pouvons utiliser la syntaxe suivante pour créer une nouvelle colonne appelée team_pos_cum_count qui affiche le nombre cumulé pour chaque équipe et position dans le DataFrame :
#calculate cumulative count by team
df['team_pos_cum_count'] = df.groupby(['team', 'position']).cumcount()
#view updated DataFrame
print(df)
team position points team_pos_cum_count
0 A G 14 0
1 A G 22 1
2 A G 25 2
3 A F 34 0
4 B G 30 0
5 B G 12 1
6 B F 10 0
7 B F 18 1
La nouvelle colonne appelée team_pos_cum_count contient le nombre cumulé de chaque équipe et position en commençant par une valeur de zéro.
Remarque : Vous pouvez trouver la documentation complète de la fonction cumcount dans pandas ici .
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes dans les pandas :
Comment additionner des colonnes spécifiques dans Pandas
Comment additionner des colonnes en fonction d’une condition dans Pandas
Comment calculer une somme cumulée inversée chez les pandas