Maison  >  Article  >  développement back-end  >  Comment regrouper les données par intervalle de temps dans Python Pandas ?

Comment regrouper les données par intervalle de temps dans Python Pandas ?

PHPz
PHPzavant
2023-08-29 14:13:02841parcourir

如何在Python Pandas中按时间间隔分组数据?

L'analyse des données devient de plus en plus un aspect important de chaque secteur. De nombreuses organisations s'appuient fortement sur l'information pour prendre des décisions stratégiques, prévoir les tendances et comprendre le comportement des consommateurs. Dans un tel environnement, la bibliothèque Pandas de Python apparaît comme un dispositif puissant, offrant une gamme différente de fonctionnalités pour manipuler, décomposer et visualiser avec succès les informations. L'une de ces fonctionnalités puissantes consiste à regrouper les données par intervalles de temps.

Cet article se concentrera sur la façon d'utiliser Pandas pour regrouper les données par intervalles de temps. Nous explorerons la syntaxe, des algorithmes faciles à comprendre, deux approches différentes et deux codes du monde réel entièrement exécutables basés sur ces approches.

Grammaire

La méthode sur laquelle nous allons nous concentrer est la fonction groupby() de Pandas, en particulier sa méthode de rééchantillonnage. La syntaxe est la suivante :

df.groupby(pd.Grouper(key='date', freq='T')).sum()

En grammaire :

  • df − votre DataFrame.

  • groupby(pd.Grouper()) − Fonction de regroupement de données.

  • key - La colonne par laquelle vous souhaitez effectuer un regroupement. Ici, c'est la colonne 'date'.

  • freq − fréquence de l'intervalle de temps. ("T" représente les minutes, "H" représente les heures, "D" représente les jours, etc.)

  • sum() - Fonction d'agrégation.

Algorithme

Voici un algorithme étape par étape pour regrouper les données par intervalles de temps -

  • Importez la bibliothèque nécessaire, à savoir Pandas.

  • Chargez ou créez votre DataFrame.

  • 25edfb22a4f469ecb59f1190150159c6e388a4556c0f65e1904146cc1a846beeConvertissez la colonne de date en un objet datetime, si elle n'est pas déjà convertie. 94b3e26ee717c64999d7867364b1b4a3bed06894275b65c1ab86501b08a632eb
  • Utilisez pd.Grouper pour appliquer la fonction groupby() sur la colonne de date, en utilisant la fréquence souhaitée.

  • Appliquez des fonctions d'agrégation telles que sum(), Mean()

  • Imprimez ou stockez les résultats.

Méthode

Nous considérerons deux approches différentes −

Méthode 1 : Regrouper par fréquence quotidienne

Dans cet exemple, nous créons un DataFrame contenant une plage de dates et de valeurs. Nous avons ensuite regroupé les données par fréquence quotidienne et additionné les valeurs quotidiennes.

Exemple

# Import pandas
import pandas as pd

# Create a dataframe
df = pd.DataFrame({
   'date': pd.date_range(start='1/1/2022', periods=100, freq='H'),
   'value': range(100)
})

# Convert 'date' to datetime object, if not already
df['date'] = pd.to_datetime(df['date'])

# Group by daily frequency
daily_df = df.groupby(pd.Grouper(key='date', freq='D')).sum()

print(daily_df)

Sortie

            value
date             
2022-01-01    276
2022-01-02    852
2022-01-03   1428
2022-01-04   2004
2022-01-05    390

Instructions

L'introduction de la bibliothèque Pandas est une exigence absolue pour tout travail de manipulation de données et c'est la principale chose que nous allons vraiment faire dans ce code. L'utilisation de la stratégie pd.DataFrame() est une étape ultérieure lors de la construction d'un DataFrame. Les parties "Date" et "Valeur" constituent cette trame de données. La fonction pd.date_range() est utilisée pour créer une plage d'horodatages horaires dans la colonne "Date", tandis que la partie "Valeur" ne contient que des plages de nombres entiers. La colonne "Date" est le résultat de cette interaction.

Bien que notre colonne Date gère actuellement les objets datetime différemment, nous utilisons progressivement la fonction pd.to_datetime() pour nous assurer qu'elle est modifiée. Cette étape est critique car la progression de l’activité de collecte dépend du fait que le segment possède ou non un type d’information d’objet datetime.

Après cela, afin de regrouper les données par fréquence quotidienne (« D »), nous utilisons la fonction groupby() combinée avec la fonction pd.Grouper(). Après le regroupement, nous utilisons la fonction sum() pour combiner tous les éléments « valeur » appartenant au même jour en un seul total.

Enfin, le DataFrame groupé est écrit, affichant le total des valeurs de chaque jour.

Méthode 2 : Regrouper par fréquence personnalisée, telle que des intervalles de 15 minutes

Exemple

# Import pandas
import pandas as pd

# Create a dataframe
df = pd.DataFrame({
   'date': pd.date_range(start='1/1/2022', periods=100, freq='T'),
   'value': range(100)
})

# Convert 'date' to datetime object, if not already
df['date'] = pd.to_datetime(df['date'])

# Group by 15-minute frequency
custom_df = df.groupby(pd.Grouper(key='date', freq='15T')).sum()

print(custom_df)

Sortie

                     value
date                      
2022-01-01 00:00:00    105
2022-01-01 00:15:00    330
2022-01-01 00:30:00    555
2022-01-01 00:45:00    780
2022-01-01 01:00:00   1005
2022-01-01 01:15:00   1230
2022-01-01 01:30:00    945

Instructions

La technique suivante commence par un import de la bibliothèque Pandas similaire à la première puis crée un DataFrame. Ce DataFrame est le même que celui utilisé dans le modèle précédent ; la seule différence est que la colonne 'date' contient désormais l'horodatage en minutes.

La colonne 'date' doit être un objet datetime pour que l'activité de collecte fonctionne correctement, et la fonction pd.to_datetime() garantit que cela se produit.

Dans cette section, nous utilisons la fonction pd.Grouper() à l'intérieur de la méthode groupby() pour effectuer des opérations de regroupement en utilisant une fréquence dédiée de 15 minutes (« 15T »). Pour agréger les entrées « valeur » pour chaque intervalle de 15 minutes, nous utilisons la fonction sum(), qui est la même méthode que celle utilisée dans la première méthode.

Complétez le code en affichant un nouveau DataFrame groupé affichant la somme de la colonne 'valeur' ​​pour chaque intervalle de 15 minutes.

Conclusion

Les puissantes fonctionnalités de Pandas incluent diverses opérations de données, dont l'une consiste à regrouper les données par intervalles de temps. En utilisant la fonction groupby() en conjonction avec pd.Grouper, nous pouvons segmenter efficacement les données en fonction de fréquences quotidiennes ou de fréquences personnalisées, permettant une analyse de données efficace et flexible.

La possibilité de regrouper les données par intervalles de temps permet aux analystes et aux entreprises d'extraire des informations significatives à partir des données. Qu'il s'agisse de calculer les ventes totales par jour, d'obtenir la température moyenne par heure ou de compter les visites sur un site Web toutes les 15 minutes, le regroupement des données par intervalles de temps nous permet de mieux comprendre les tendances, les modèles et les changements dans les données au fil du temps.

N'oubliez pas que la bibliothèque Pandas de Python est un puissant outil d'analyse de données. Apprendre à utiliser ses fonctionnalités, telles que la méthode groupby, peut vous aider à devenir un analyste de données ou un data scientist plus efficace et plus compétent.

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer