Pandas / NumPy - нанесение даты в виде оси X - PullRequest
0 голосов
/ 08 сентября 2018

Моя цель - построить эти простые данные в виде графика, где данные x представляют собой даты (дата показана на оси x), а цена - на оси y. Понимание того, что dtype массива записей NumPy для даты поля - datetime64 [D], что означает, что это 64-битный np.datetime64 в единицах 'день'. Хотя этот формат более переносим, ​​Matplotlib пока не может создать этот формат изначально. Вместо этого мы можем отобразить эти данные, изменив даты на экземпляры DateTime.date, чего можно добиться путем преобразования в массив объектов: что я сделал ниже, чтобы увидеть астип ('0'). Но я все еще получаю

эта ошибка:

 view limit minimum -36838.00750000001 is less than 1 and is an invalid Matplotlib date value. This often happens if you pass a non-DateTime value to an axis that has DateTime units

код:

import pandas as pd
import matplotlib.pyplot as plt


df = pd.read_csv(r'avocado.csv')

df2 = df[['Date','AveragePrice','region']]
df2 = (df2.loc[df2['region'] == 'Albany'])

df2['Date'] = pd.to_datetime(df2['Date'])
df2['Date'] = df2.Date.astype('O')

plt.style.use('ggplot')
ax = df2[['Date','AveragePrice']].plot(kind='line', title ="Price Change",figsize=(15,10),legend=True, fontsize=12)
ax.set_xlabel("Period",fontsize=12)
ax.set_ylabel("Price",fontsize=12)

plt.show()

df.head (3)

    Unnamed: 0  Date    AveragePrice    Total Volume    4046    4225    4770    Total Bags  Small Bags  Large Bags  XLarge Bags type    year    region
0   0   2015-12-27  1.33    64236.62    1036.74 54454.85    48.16   8696.87 8603.62 93.25   0.0 conventional    2015    Albany
1   1   2015-12-20  1.35    54876.98    674.28  44638.81    58.33   9505.56 9408.07 97.49   0.0 conventional    2015    Albany
2   2   2015-12-13  0.93    118220.22   794.70  109149.67   130.50  8145.35 8042.21 103.14  0.0 conventional    2015    Albany

1 Ответ

0 голосов
/ 08 сентября 2018
df2 = df[['Date', 'AveragePrice', 'region']]
df2 = (df2.loc[df2['region'] == 'Albany'])
df2['Date'] = pd.to_datetime(df2['Date'])
df2 = df2[['Date', 'AveragePrice']]
df2 = df2.sort_values(['Date'])
df2 = df2.set_index('Date')

print(df2)

ax = df2.plot(kind='line', title="Price Change")
ax.set_xlabel("Period", fontsize=12)
ax.set_ylabel("Price", fontsize=12)

plt.show()

выход:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...