Я использую pandas
и matplotlib
, чтобы попытаться построить временные ряды кадра данных, где каждая «группа по» категориального столбца должна отображаться как «средний столбец» в пределах полосы с «мин / макс».
Временные ряды представляют собой серию объектов datetime, представляющих начало квартала, а также являются индексом кадра данных.
Иногда я получаю ValueError: ordinal must be >= 1
, даже если я пытался очистить историю matplotlib
с предыдущих графиков с помощью таких команд, как plt.clf()
и plt.close('all')
.
Я думаю, что проблема может быть связана с повторным использованием осей, но если это основная причина, то я не уверен, как этого избежать.
Иногда я получаю KeyError
в поле datetime
(которое я также сделал индексом с помощью команды pair_filtered_df.set_index('year_quarter', inplace=True)
и анализирую datetime
при загрузке файла CSV с использованием pd.read_csv
с параметром parse_dates=['year_quarter']
)
Это код:
fig, ax = plt.subplots()
for key, grp in pair_filtered_df.groupby(['category']):
# trying to plot only for one category
# in an attempt to isolate/reproduce the error
if key == "a":
ax = grp.plot(ax=ax, kind='line', x='year_quarter', y='median', label=key)
# according to some examples I've see this
# `fill_between` should allow plotting
# a "min/max" band wrapping the "median"
plt.fill_between(grp.index, grp['min'], grp['max'], color='b', alpha=0.2)
При запуске pair_filtered_df.head()
, тогда я вижу эту структуру кадра данных:
![enter image description here](https://i.stack.imgur.com/jAcJK.png)
При запуске pair_filtered_df.tail()
тогда я вижу эту структуру кадра данных:
![enter image description here](https://i.stack.imgur.com/lPLrF.png)
Я не могу найти способ устранить эту проблему, в основном потому, что я не совсем понимаю, как обращаться с индексом, используя pandas
и как plt
из matplotlib
работает, "делая скрытые вещи", но Я продолжаю видеть много разных ошибок.
Как я могу построить эти временные ряды с разбивкой по категориям и используя минимальные / максимальные полосы?
Как можно изобразить разные категории с разными «семейными цветами» для диапазона мин / макс и медианы?