我有零售牛肉广告计数时间序列数据,我打算制作堆叠折线图,旨在以三周的平均值显示上周杂货店每家商店发布的平均广告数量。为此,我设法汇总数据以进行绘图并尝试制作我想要的折线图。主要动机是基于问题的背景和所需的情节。在我的尝试中,我无法得到非常好的折线图,因为它没有足够的信息来理解。我想知道如何在matplotlib
. 谁能建议我从目前的尝试中我应该做什么?有什么想法吗?
可重复的数据和当前的尝试
这是我在当前尝试中使用的最小可重复数据:
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import seaborn as sns
from datetime import timedelta, datetime
url = 'https://gist.githubusercontent.com/adamFlyn/96e68902d8f71ad62a4d3cda135507ad/raw/4761264cbd55c81cf003a4219fea6a24740d7ce9/df.csv'
df = pd.read_csv(url, parse_dates=['date'])
df.drop(columns=['Unnamed: 0'], inplace=True)
df_grp = df.groupby(['date', 'retail_item']).agg({'number_of_ads': 'sum'})
df_grp["percentage"] = df_grp.groupby(level=0).apply(lambda x:100 * x / float(x.sum()))
df_grp = df_grp.reset_index(level=[0,1])
for item in df_grp['retail_item'].unique():
dd = df_grp[df_grp['retail_item'] == item].groupby(['date', 'percentage'])[['number_of_ads']].sum().reset_index(level=[0,1])
dd['weakly_change'] = dd[['percentage']].rolling(7).mean()
fig, ax = plt.subplots(figsize=(8, 6), dpi=144)
sns.lineplot(dd.index, 'weakly_change', data=dd, ax=ax) …
Run Code Online (Sandbox Code Playgroud)