【问题标题】:Plot multiple time series from a dataframe [closed]从数据框中绘制多个时间序列 [关闭]
【发布时间】:2020-08-26 23:06:27
【问题描述】:

我想在 Y 轴上绘制销售额,在 X 轴上绘制时间。每个车型一条线。我设法为总销售额绘制了一条线。有什么建议可以获取每种车型的线路吗?

cars = {"Date" : ["2020-01-29", "2020-01-02", "2020-01-24", "2020-05-21", "2020-12-31", "2020-12-01", "2020-12-01"],
    "Brand": ["Honda Civic","Toyota Corolla","Honda Civic", "Ford Focus","Audi A4", "Ford Focus", "Ford Focus"],
    "Price": [22000,25000,22000,27000,35000,27000,27000]
    }
df2 = pd.DataFrame(cars, columns = ["Date", "Brand", "Price"])
df2["Date"] =  pd.to_datetime(df2["Date"])
df2=df2.sort_values(by="Date")
df2.index = df2["Date"]
gb2=df2.groupby([df2.index.year.values,df2.index.month.values,df2.index.day.values]).sum()
gb2.plot.line()
plt.show()

【问题讨论】:

  • 有很多python绘图教程。 Matplotlib 是一个流行的模块,pandas 与 matplotlib 集成。对于绘图系列,例如,请参阅pandas.pydata.org/pandas-docs/version/0.24.2/reference/api/… -- 但是,您尝试绘制的数据似乎不适合您尝试创建的绘图类型。特别是,似乎没有每种车型的价格历史记录。请检查您的数据是否适合您要制作的绘图。

标签: python pandas matplotlib plot line


【解决方案1】:

您可以通过以下方式为每个车型绘制一条线。请注意,使用 marker 是因为孤立的线不会显示 Toyota Corolla 或 Audi A4 的任何绘图数据,它们每个仅由一个数据点表示。

fig,ax = plt.subplots()
for (i, b) in df2.groupby('Brand'):
    b.plot(x='Date', y='Price', marker='o', ax=ax, label=i)
ax.legend()

【讨论】:

  • 谢谢。我使用 Seaborn 完成了它并得到了相同的结果。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-30
  • 1970-01-01
  • 2021-11-11
  • 2020-11-08
  • 2013-12-25
  • 1970-01-01
  • 2021-04-25
相关资源
最近更新 更多