DataFrame
имеет данные с временными метками, и я хочу визуально сравнить ежедневную временную эволюцию данных. Если я groupby
день и построить графики; они явно смещены по горизонтали во времени из-за различий в их датах.
Я хочу построить независимый от даты график дневных тенденций на оси времени. С этой целью я прибегнул к shift
возврату данных на соответствующее количество дней, как показано в следующем коде.
import pandas as pd
import datetime
import matplotlib.pyplot as plt
index1 = pd.date_range('20141201', freq='H', periods=2)
index2 = pd.date_range('20141210', freq='2H', periods=4)
index3 = pd.date_range('20141220', freq='3H', periods=5)
index = index1.append([index2, index3])
df = pd.DataFrame(list(range(1, len(index)+1)), index=index, columns=['a'])
gbyday = df.groupby(df.index.day)
first_day = gbyday.keys.min() # convert all data to this day
plt.figure()
ax = plt.gca()
for n,g in gbyday:
g.shift(-(n-first_day+1), 'D').plot(ax=ax, style='o-', label=str(n))
plt.show()
в результате получается следующий сюжет
Вопрос: Это способ панд сделать это? Другими словами, как я могу добиться этого более элегантно?