Étant donné un fichier comme ceci:Crosstab dataframe avec datetime réchantillonné de fichier de table
date uselessinfo category uselessinfo2
2011-07-22 02:56:36 banana 1 apple
2011-02-27 17:15:44 banana 4 apple
2010-12-12 00:13:42 banana 1 apple
2010-10-12 00:13:00 banana 2 apple
J'utilise pandas géants pour construire une trame de données:
data = pd.read_table(pathToFile, "\t")
A partir de ce que j'essaie d'utiliser des méthodes de pandas simples à Construire une matrice de tableau croisé comme:
1 2 3 4
2010 1 1 0 0
2011 1 0 0 1
Où les colonnes sont des catégories, les lignes sont des dates et les valeurs sont t Mon problème est que je ne sais pas comment classer les dates-dates par années ou par mois et ensuite construire la matrice de tableau croisé. Je l'ai vu sur stackoverflow que la fonction re-échantillonnage est la meilleure façon de bin datetimes et de construire un tableau croisé alors la matrice:
data = data.resample('M', on='date').sum()
data = pd.crosstab(data.date,data.category)
Est-il possible de combiner ces deux fonctions pour obtenir la matrice désirée? Ou suis-je totalement mal?
L'objectif à atteindre est d'utiliser cette matrice pour tracer un heatmap Seaborn ressemblant à:
travaillé très fin et facile à régler! Je m'interroge sur la ligne de rééchantillonnage (que j'ai commentée pour le moment). Pourquoi les catégories changent-elles alors que nous spécifions que nous voulons rééchantillonner les «dates»? – Vanpourix
Hmmm, si resample par mois et besoin de dates, alors toutes les dates sont converties en dernière date du mois. C'est par conception chez les pandas. Peut-être que alo peut vérifier [docs] (http://pandas.pydata.org/pandas-docs/stable/timeseries.html#resampling) – jezrael
Et les catégories sont changées, parce que groupées par mois et agrégées par somme - donc les catégories sont des nombres et sont additionnés. – jezrael