gpt4 book ai didi

python - 在 Seaborn 情节中叠加不同年份的 Pandas 时间序列

转载 作者:行者123 更新时间:2023-11-28 22:26:32 25 4
gpt4 key购买 nike

我有一个 Pandas 数据框,我想探索时间序列的周期性、趋势等。 Here是数据。

为了可视化它,我想将每年的“子时间序列”叠加在同一个图上(即 01/01/2000、01/01/2001 和 01/01/的数据具有相同的 x 坐标) 2002).

我是否必须转换我的日期列以使每个数据具有相同的年份?

有没有人知道如何做到这一点?

最佳答案

设置
这会解析您链接的数据

df = pd.read_csv(
'data.csv', sep=';', decimal=',',
usecols=['date', 'speed', 'height', 'width'],
index_col=0, parse_dates=[0]
)

我的技巧
我从日期中删除了除年份以外的所有内容,并假定年份为 2012,因为它是闰年并且将容纳 2 月 29 日。我将年份拆分为另一个级别的多索引、unstackplot

idx = pd.MultiIndex.from_arrays([
pd.to_datetime(df.index.strftime('2012-%m-%d %H:%M:%S')),
df.index.year
])

ax = df.set_index(idx).unstack().speed.plot()
lg = ax.legend(bbox_to_anchor=(1.05, 1), loc=2, ncol=2)

enter image description here


为了美化它

fig, axes = plt.subplots(3, 1, figsize=(15, 9))

idx = pd.MultiIndex.from_arrays([
pd.to_datetime(df.index.strftime('2012-%m-%d %H:%M:%S')),
df.index.year
])

d1 = df.set_index(idx).unstack().resample('W').mean()
d1.speed.plot(ax=axes[0], title='speed')
lg = axes[0].legend(bbox_to_anchor=(1.02, 1), loc=2, ncol=1)

d1.height.plot(ax=axes[1], title='height', legend=False)
d1.width.plot(ax=axes[2], title='width', legend=False)

fig.tight_layout()

enter image description here

关于python - 在 Seaborn 情节中叠加不同年份的 Pandas 时间序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44705085/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com