【问题标题】:Plot time series on category level在类别级别绘制时间序列
【发布时间】:2021-03-28 23:15:22
【问题描述】:

我正在尝试在类别级别上为time series data 绘制销售/支出/折扣。我尝试了以下两种方法,但它们对我不起作用。

  1. Plotting multiple time series after a groupby in pandas
  2. Pandas: plot multiple time series DataFrame into a single plot

非常感谢任何帮助。

【问题讨论】:

  • 您的问题不清楚。您想要每个类别的一个子图,每个子图的销售额/支出/折扣,每个子图的销售/支出/折扣每个子图,每个子图的所有类别,还是一个图中的所有曲线?
  • 销售/支出/折扣各一个子图,每个子图的所有类别

标签: python-3.x matplotlib seaborn


【解决方案1】:

Seaborn 具有将类别分配到子图的功能。但是,据我所知,不支持您的数据结构,因此您必须先转换您的数据框(我很高兴在这里被证明是错误的)。所以,恕我直言,这没有意义,我们可以简单地遍历列类别:

import pandas as pd
from matplotlib import pyplot as plt
import seaborn as sns

#style definition
sns.set_theme(style="darkgrid")
sns.set_palette("hls")

#data import, parsing dates, making category to a categorical variable
df = pd.read_csv("final_df.csv", sep=",", parse_dates=["Date"], dayfirst=True)
df.category=df.category.astype(str)

cols = ["Sales", "Spends", "mean_percentoff_bycategory"]

fig, axes = plt.subplots(len(cols), figsize=(12, 15))
    
for curr_ax, curr_col in zip(axes.flat, cols):
    sns.lineplot(data=df, x="Date", y=curr_col, hue="category",  ax=curr_ax)

plt.show()

示例输出(不确定这能告诉我们多少):

【讨论】:

  • 谢谢,对我来说,情节 0、3、6、9 中只有四个类别。还有可能得到不同的彩色线条(而不是紫色阴影):)
  • 您是对的 - 导入后未正确定义类别。关于风格方面,好吧,我不会讨论这个。有了这么多重叠的数据点,它总是看起来很可怕。但我指出了如何更改样式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-03-17
  • 1970-01-01
  • 1970-01-01
  • 2021-12-15
  • 1970-01-01
  • 1970-01-01
  • 2012-07-05
相关资源
最近更新 更多