Peut Pandas tracer un histogramme de dates?
J'ai pris ma Série et contraint à une colonne datetime de dtype=datetime64[ns]
(bien que seulement besoin de jour résolution...ne savez pas comment changer).
import pandas as pd
df = pd.read_csv('somefile.csv')
column = df['date']
column = pd.to_datetime(column, coerce=True)
mais traçage ne fonctionne pas:
ipdb> column.plot(kind='hist')
*** TypeError: ufunc add cannot use operands with types dtype('<M8[ns]') and dtype('float64')
Je voudrais tracer un histogramme qui vient de indique le nombre de dates par semaine, le mois ou l'année.
Il y a sûrement un moyen de le faire dans pandas
?
- pouvez-vous montrer un échantillon du df-vous ?
Vous devez vous connecter pour publier un commentaire.
Compte tenu de cette df:
et, si c'est pas déjà le cas:
Pour montrer le nombre de dates par mois:
.dt
vous permet d'accéder à l'datetime propriétés.Qui vous donnera:
Vous pouvez remplacer les mois de l'année, le jour, etc..
Si vous voulez vous distinguer de l'année et le mois par exemple, il suffit de faire:
Qui donne:
Était-ce ce que vous vouliez ? Est-ce clair ?
Espérons que cette aide !
date
ouDate
voici les noms de colonnes, de sorte que si votre colonne avec les dates, c'est toto, il serait:df.foo.dt.month
groupby
sur des combinaisons de deux attributs de colonnes de données (par exemple: année et la date)?df.index = [datetime.datetime(year=int(y), month=int(m), day=15) for y, m in df.index]
.Duplicate level name
erreur. Résolu en ajoutantrename()
par exempledf.groupby([df["date"].dt.year.rename('year'), df["date"].dt.month.rename('month')]).count().plot(kind="bar")
Je pense que rééchantillonnage peut-être ce que vous cherchez. Dans votre cas, ne:
Il ne fait que le comptage et le pas de l'intrigue, de sorte que vous aurez à faire vos propres parcelles.
Voir ce post pour plus de détails sur la documentation de rééchantillonner
les pandas de rééchantillonnage de la documentation
J'ai couru dans des problèmes similaires comme vous l'avez fait. Espérons que cette aide.
Rendue exemple
Exemple De Code
Je pense que pour résoudre ce problème, vous pouvez utiliser ce code, il convertit la date de type int types:
pour obtenir uniquement la date, vous pouvez ajouter ce code:
J'étais juste avoir de la difficulté avec cela. J'imagine que, puisque vous travaillez avec des dates que vous désirez conserver l'ordre chronologique (comme je l'ai fait.)
La solution de contournement est alors
S'il vous plaît, si quelqu'un connaît une meilleure façon veuillez en parler.
EDIT:
pour jean-dessus, voici un exemple de données [je choisis au hasard à partir de l'ensemble des données, d'où le trivial données d'histogramme.]
De sortie:
J'ai été en mesure de contourner ce problème en (1) le tracé avec matplotlib au lieu d'utiliser le dataframe directement et (2) à l'aide de la
values
attribut. Voir l'exemple:Cela ne fonctionne pas si je n'utilise pas
values
, mais je ne sais pas pourquoi il ne fonctionne pas.