Comment puis-je Groupe Par Mois à partir d'un champ de Date à l'aide de Python/Pandas
J'ai un Data-frame df qui est comme suit:
| date | Revenue |
|----------- | ---------|
| 6/2/2017 | 100 |
| 5/23/2017 | 200 |
| 5/20/2017 | 300 |
| 6/22/2017 | 400 |
| 6/21/2017 | 500 |
J'ai besoin de regrouper les données ci-dessus par mois pour obtenir en sortie:
| date | SUM(Revenue) |
|------ | --------------|
| May | 500 |
| June | 1000 |
J'ai essayé ce code mais il ne fonctionne pas:
df.groupby(month('date')).agg({'Revenue': 'sum'})
Je veux seulement utiliser des Pandas ou des Numpy et pas de bibliothèques supplémentaires
df.groupby(pd.Grouper(key='Date',freq='M')).agg({'Revenue':'sum'})
, ce qui suppose le type de données de la colonne de la date datetime
Vous devez vous connecter pour publier un commentaire.
essayez ceci:
date
colonne correctementEssayer un groupby à l'aide d'une pandas Loches:
Pour DataFrame avec de nombreuses lignes, à l'aide
strftime
prend plus de temps. Si la colonne de date a déjà dtype dedatetime64[ns]
(vous pouvez utiliserpd.to_datetime()
à convertir, ou spécifierparse_dates
lors de l'import csv, etc.), on peut accéder directement datetime propriété pourgroupby
étiquettes (Méthode 3). L'accélération est importante.Méthode 1: strftime
1.47 s ± 10.1 ms par boucle (moyenne ± std. dev. de 7 points, 10 boucles de chaque)
Méthode 2: Mérou
De 56,9 ms ± 2.88 ms par boucle (moyenne ± std. dev. de 7 points, 10 boucles de chaque)
Méthode 3: datetime propriétés
34 ms ± 3.34 ms par boucle (moyenne ± std. dev. de 7 points, 10 boucles de chaque)