Python 使用子图显示基于四列的20个图形

Python 使用子图显示基于四列的20个图形,python,pandas,matplotlib,Python,Pandas,Matplotlib,有一个包含日期、类型、价格和位置列的数据框。有必要为每种类型建立价格对日期依赖性的图表(每种-在单独的图片上)-完成后,我得到10个图表: import pandas as pd 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'] date =

有一个包含日期、类型、价格和位置列的数据框。有必要为每种类型建立价格对日期依赖性的图表(每种-在单独的图片上)-完成后,我得到10个图表:

import pandas as pd
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']

date = []
for d in da["Date"]:
    d = str(d)
    date.append(d[:10])
da["Date"] = date

df = da.loc[da.Type.str.startswith('i')]
(df
 .set_index("Date")
 .groupby("Type")
 .apply(lambda x: x[["Price"]].plot(grid=True, title=x.name)))
您还需要使用子图在列中显示这些图形。每列应包含与其位置相关的图形(即,应有20个图形,位于列中。列的数量取决于“位置”的数量)。怎么做


groupby是键,只需按这两个键进行分组,然后允许子批次。 这将为您提供所需的20个

(df
 .set_index("Date")
 .groupby(['Type','Location'])
 .apply(lambda x: x[["Price"]].plot(grid=True, \
                                    title=[x.name], \
                                    subplots=True)))

在您的代码中,所有20个图形都显示在一列中,您需要每个位置的图形位于其自己的列中。