I miei dati possono avere più eventi in una determinata data o NESSUN evento in una data. Prendo questi eventi, faccio un conteggio per data e li pianifico. Tuttavia, quando li trama, le mie due serie non sempre corrispondono.
idx = pd.date_range(df['simpleDate'].min(), df['simpleDate'].max())
s = df.groupby(['simpleDate']).size()
Nel codice sopra idx diventa un intervallo di diciamo 30 date. Dal 09-01-2013 al 09-30-2013 Tuttavia S può avere solo 25 o 26 giorni perché non si sono verificati eventi per una determinata data. Quindi ottengo un AssertionError poiché le dimensioni non corrispondono quando provo a tracciare:
fig, ax = plt.subplots()
ax.bar(idx.to_pydatetime(), s, color='green')
Qual è il modo corretto per affrontare questo problema? Voglio rimuovere le date senza valori da IDX o (cosa che preferisco fare) è aggiungere alla serie la data mancante con un conteggio di 0. Preferisco avere un grafico completo di 30 giorni con valori 0. Se questo approccio è corretto, qualche suggerimento su come iniziare? Ho bisogno di una sorta di reindex
funzione dinamica ?
Ecco uno snippet di S ( df.groupby(['simpleDate']).size()
), nota l'assenza di voci per 04 e 05.
09-02-2013 2
09-03-2013 10
09-06-2013 5
09-07-2013 1
reindex
è una funzione straordinaria. Può (1) riordinare i dati esistenti in modo che corrispondano a un nuovo set di etichette, (2) inserire nuove righe in cui non esisteva un'etichetta in precedenza, (3) riempire i dati per le etichette mancanti, (incluso il riempimento in avanti / all'indietro) (4) selezionare le righe per etichetta!