Maison  >  Article  >  développement back-end  >  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
Linda Hamiltonoriginal
2024-10-31 01:16:03514parcourir

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
... 

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'])

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)

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
...

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!

Déclaration:
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