Ho un DataFrame panda con una colonna TIMESTAMP
, che è del tipo di dati datetime64. Si prega di tenere presente, inizialmente questa colonna non è impostata come l'indice; l'indice si trova a soli interi regolari, e le prime righe simile a questa:Media del conteggio giornaliero dei record al mese in un Pandas DataFrame
TIMESTAMP TYPE
0 2014-07-25 11:50:30.640 2
1 2014-07-25 11:50:46.160 3
2 2014-07-25 11:50:57.370 2
C'è un numero arbitrario di record per ogni giorno, e ci possono essere giorni senza dati. Quello che sto cercando di ottenere è il numero medio di numero di registrazioni giornaliere al mese quindi tracciarlo come un grafico a barre con mesi nell'asse x (aprile 2014, maggio 2014 ... ecc.). Sono riuscito a calcolare questi valori utilizzando il codice qui sotto
dfWIM.index = dfWIM.TIMESTAMP
for i in range(dfWIM.TIMESTAMP.dt.year.min(),dfWIM.TIMESTAMP.dt.year.max()+1):
for j in range(1,13):
print dfWIM[(dfWIM.TIMESTAMP.dt.year == i) & (dfWIM.TIMESTAMP.dt.month == j)].resample('D', how='count').TIMESTAMP.mean()
che dà il seguente risultato:
nan
nan
3100.14285714
6746.7037037
9716.42857143
10318.5806452
9395.56666667
9883.64516129
8766.03225806
9297.78571429
10039.6774194
nan
nan
nan
Questo è ok così com'è, e con un po 'più di lavoro, posso mappare ai risultati di correggere i nomi dei mesi, quindi traccia il grafico a barre. Tuttavia, non sono sicuro che questo sia il modo corretto/migliore e sospetto che ci possa essere un modo più semplice per ottenere i risultati usando Pandas.
Sarei lieto di sapere cosa ne pensate. Grazie!
NOTA: Se non si imposta la colonna TIMESTAMP come indice, viene visualizzato un errore "operazione di riduzione" che significa "non consentito per questo dtype".
Non riuscivo a capire come farlo usando 'groupby'. Risulta che 'TimeGrouper' è il trucco. Molte grazie! La formattazione – marillion
lungo l'asse x per il diagramma a barre con serie temporali era molto più complicata di quanto pensassi. La soluzione è su http://stackoverflow.com/questions/33642388/pandas-bar-plot-with-multiindex-dataframe se qualcuno si blocca nello stesso punto. – marillion