Maison > développement back-end > Tutoriel Python > Comment calculer la différence de scores pour plusieurs champs dans un DataFrame Pandas ?

Comment calculer la différence de scores pour plusieurs champs dans un DataFrame Pandas ?

Linda Hamilton
Libérer: 2024-10-31 01:16:03
original
593 Les gens l'ont consulté

How to Calculate the Difference in Scores for Multiple Fields in a Pandas DataFrame?

Groupe Pandas sur plusieurs champs avec calcul de différence

En programmation, la manipulation des données est cruciale et Pandas est une bibliothèque puissante pour effectuer ces tâches efficacement. Une question courante est de savoir comment regrouper les données selon plusieurs champs et calculer les différences. Explorons comment y parvenir.

Problème :

Considérons un DataFrame avec la structure suivante :

         date    site country  score
0  2018-01-01  google      us    100
1  2018-01-01  google      ch     50
2  2018-01-02  google      us     70
3  2018-01-03  google      us     60
... 
Copier après la connexion

Le but est de trouver le Différence de 1/3/5 jours dans les scores pour chaque combinaison « site/pays ».

Solution :

Pour résoudre ce problème, nous pouvons utiliser le groupby de Pandas et fonctions diff :

  1. Trier le DataFrame :
df = df.sort_values(by=['site', 'country', 'date'])
Copier après la connexion

Le tri garantit que nos données sont organisées pour un regroupement et des calculs de différence appropriés.

  1. Groupby et calculer la différence :
df['diff'] = df.groupby(['site', 'country'])['score'].diff().fillna(0)
Copier après la connexion

Cette ligne regroupe le DataFrame par colonnes « site » et « pays » en utilisant groupby. Ensuite, il calcule la différence entre chaque score consécutif au sein de chaque groupe en utilisant diff. Le résultat est stocké dans une nouvelle colonne appelée « diff ». Toutes les valeurs manquantes sont remplacées par 0 à l'aide de fillna(0).

Sortie :

Le DataFrame résultant contiendra les colonnes d'origine ainsi que la colonne « diff » :

         date    site country  score  diff
0  2018-01-01      fb      es    100   0.0
1  2018-01-02      fb      gb    100   0.0
...
Copier après la connexion

Remarques supplémentaires :

  • Si vous avez besoin d'un tri arbitraire (par exemple, donner la priorité à « google » par rapport à « fb »), vous pouvez spécifier l'ordre dans une liste et définissez la colonne comme catégorielle avant le tri.
  • La fonction fillna(0) remplace les valeurs manquantes par 0, mais vous pouvez la remplacer par n'importe quelle valeur souhaitée.
  • Cette méthode peut être utilisée pour calculer les différences sur n'importe quel intervalle de temps (par exemple, 1 jour, 3 mois, etc.).

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal