Moje dane mogą mieć wiele wydarzeń w określonym dniu lub ŻADNYCH wydarzeń w danym dniu. Biorę te wydarzenia, liczę według daty i wykreślam je. Jednak kiedy je wykreślam, moje dwie serie nie zawsze pasują.
idx = pd.date_range(df['simpleDate'].min(), df['simpleDate'].max())
s = df.groupby(['simpleDate']).size()
W powyższym kodzie idx staje się zakresem powiedzmy 30 dat. 09-01-2013 do 09-30-2013 Jednak S może mieć tylko 25 lub 26 dni, ponieważ żadne wydarzenia nie miały miejsca w danym dniu. Otrzymuję wtedy AssertionError, ponieważ rozmiary nie pasują do siebie, gdy próbuję wykreślić:
fig, ax = plt.subplots()
ax.bar(idx.to_pydatetime(), s, color='green')
Jaki jest właściwy sposób rozwiązania tego problemu? Czy chcę usunąć daty bez wartości z IDX, czy (co wolałbym zrobić) dodać do serii brakującą datę z liczbą 0. Wolałbym mieć pełny wykres 30 dni z 0 wartościami. Jeśli to podejście jest słuszne, czy masz jakieś sugestie, jak zacząć? Czy potrzebuję jakiejś reindex
funkcji dynamicznej ?
Oto fragment S ( df.groupby(['simpleDate']).size()
), nie zauważ żadnych wpisów dla 04 i 05.
09-02-2013 2
09-03-2013 10
09-06-2013 5
09-07-2013 1
reindex
to niesamowita funkcja. Może (1) zmienić kolejność istniejących danych, aby dopasować je do nowego zestawu etykiet, (2) wstawić nowe wiersze, w których wcześniej nie istniała żadna etykieta, (3) wypełnić dane dla brakujących etykiet, (w tym przez wypełnienie do przodu / do tyłu) (4) wybrać wiersze według etykiety!