Maison >développement back-end >Tutoriel Python >Comment calculer les différences basées sur le temps dans les DataFrames Pandas à l'aide de Groupby et diff() ?

Comment calculer les différences basées sur le temps dans les DataFrames Pandas à l'aide de Groupby et diff() ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-30 07:45:27525parcourir

How to Calculate Time-Based Differences in Pandas DataFrames Using Groupby and diff()?

Pandas regroupés par plusieurs champs pour les différences temporelles

Dans le domaine de l'analyse des données, comparer les changements au fil du temps est une tâche cruciale. Pandas, une bibliothèque Python polyvalente, offre des fonctionnalités robustes pour gérer de telles opérations. Lorsque vous traitez des données organisées par plusieurs champs catégoriels et par heure, la méthode groupby.diff() s'avère inestimable.

Considérez un DataFrame comme celui fourni, où chaque site a des scores variables selon les pays et les dates. L'objectif est de calculer le différentiel de scores de 1/3/5 jours pour chaque combinaison site/pays.

Résolution du problème

Pour y parvenir, nous utilisons le étapes suivantes :

  1. Tri du DataFrame : Organisez les données dans un ordre cohérent par site, pays et date à l'aide de sort_values().
  2. Regroupement par site et pays : Utilisez groupby() pour créer des groupes basés sur les champs du site et du pays.
  3. Calcul des différences : Appliquez diff() au sein de chaque groupe pour calculer le score différence pour les lignes consécutives.
<code class="python">df = df.sort_values(by=['site', 'country', 'date'])
df['diff'] = df.groupby(['site', 'country'])['score'].diff().fillna(0)</code>

Sortie :

Le résultat est un DataFrame qui présente les différences de score calculées :

date site country score diff
2018-01-01 fb es 100 0.0
2018-01-02 fb gb 100 0.0
2018-01-01 fb us 50 0.0
2018-01-02 fb us 55 5.0
2018-01-03 fb us 100 45.0
2018-01-01 google ch 50 0.0
2018-01-02 google ch 10 -40.0
2018-01-01 google us 100 0.0
2018-01-02 google us 70 -30.0
2018-01-03 google us 60 -10.0

Tri avancé

Dans les cas où un ordre arbitraire est requis, comme par exemple donner la priorité à « google » par rapport à « fb », une colonne catégorielle peut être créée et attribuée comme paramètre de tri. Cela garantit que l'ordre spécifié est maintenu.

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