Как отобразить нескольких графиков по данным одних и тех же столбцов?
Есть фрейм данных со столбцами (Date,Type,Location,Price).
Нужно построить графики (каждый - на отдельной картинке) зависимости Price от Date для каждого Type в двух столбцах. Число столбцов (2) должно определяться количеством и названиями Location.
Перебираю в цикле фрейм и он рисует нужное количество графиков, указывая в них названия в соответствии с Type. То есть, на каждый Type по графику. При этом, сами графики не отличаются друг от друга, то есть содержимое всех Type перемешивается.
Я использую код:
dat = pd.read_csv('ap-northeast-1.csv', parse_dates = True, names=['Date','Type','OS', 'Location', 'Price'])
da = dat[dat.OS == 'Windows']
del da['OS']
del da['Location']
date = []
for d in da["Date"]:
d = str(d)
date.append(d[:10])
da["Date"] = date
df = da.loc[da.Type.str.startswith('i')]
for name, data in df.groupby('Type'):
plt.plot(df['Date'], df['Price'])
plt.title(name)
plt.xlabel('Date')
plt.ylabel('Price')
plt.xticks(rotation = 'vertical')
plt.grid()
plt.show()
Видимо, проблема в том, что в plt.plot(df['Date'], df['Price'])
нет переменной name. Как ее добавить, чтобы в каждом графике рисовалось только то, что относится к отдельному Type?
Ответы (2 шт):
попробуйте так:
df["Date"] = pd.to_datetime(df["Date"])
df.pivot_table(index="Date", columns="Type", values="Price", aggfunc="mean").plot()
plt.tight_layout()
Построение отдельных графиков для каждого Type:
(df
.set_index("Date")
.groupby("Type")
.apply(lambda x: x[["Price"]].plot(grid=True, title=x.name)))
