2016-12-08 1 views
1

У меня есть кадр данных Pandas с DatetimeIndex с ежемесячной частотой (M). Однако, когда я рисую столбец из этого Dataframe, метки на моем графике показывают дату и время, даже если эти биты не имеют смысла. Как я могу исправить это, чтобы месяц отображался только в формате YYYY-MM?Устанавливать форматирование времени в индексе даты и времени при построении графика Pandas

picture of problem

ответ

0

сделать небольшие изменения в вашем DateTimeIndex перед построением путем преобразования их в PeriodIndex и обеспечивая ежемесячную частоту, например, так -

a.index = a.index.to_period('M') # Even a.index.astype('period[M]') works 

Демо:

Рассмотрим DF, как показано ниже:

idx = pd.date_range('2016/1/1', periods=10, freq='M') 
df = pd.DataFrame(dict(count=np.random.randint(10,1000,10)), idx).rename_axis('start_date') 
df 

enter image description here

Старый DateTimeIndex:

>>> df.index 
DatetimeIndex(['2016-01-31', '2016-02-29', '2016-03-31', '2016-04-30', 
       '2016-05-31', '2016-06-30', '2016-07-31', '2016-08-31', 
       '2016-09-30', '2016-10-31'], 
       dtype='datetime64[ns]', name='start_date', freq='M') 

Новый PeriodIndex:

>>> df.index = df.index.to_period('M') 
>>> df.index 
PeriodIndex(['2016-01', '2016-02', '2016-03', '2016-04', '2016-05', '2016-06', 
      '2016-07', '2016-08', '2016-09', '2016-10'], 
      dtype='period[M]', name='start_date', freq='M') 

Plot их:

df['count'].plot(kind='bar') 
plt.show() 

enter image description here

Смежные вопросы