gpt4 book ai didi

python - 比较单个图 python 上的多年数据

转载 作者:太空狗 更新时间:2023-10-30 02:57:18 26 4
gpt4 key购买 nike

我有两个来自不同年份的时间序列存储在 pandas 数据框中。例如:

data15 = pd.DataFrame(
[1,2,3,4,5,6,7,8,9,10,11,12],
index=pd.date_range(start='2015-01',end='2016-01',freq='M'),
columns=['2015']
)
data16 = pd.DataFrame(
[5,4,3,2,1],
index=pd.date_range(start='2016-01',end='2016-06',freq='M'),
columns=['2016']
)

我实际上是在处理日常数据,但如果这个问题得到充分回答,我就能弄清楚剩下的问题。

我想做的是将这些不同数据集的图叠加到 1 月到 12 月的单个图上,以比较年份之间的差异。我可以通过为其中一个数据集创建一个“假”索引来做到这一点,这样它们就有一个共同的年份:

data16.index = data15.index[:len(data16)]
ax = data15.plot()
data16.plot(ax=ax)

但我想尽可能避免弄乱索引。此方法的另一个问题是年份 (2015) 将出现在我不想要的 x 轴刻度标签中。有谁知道更好的方法吗?

最佳答案

一种方法是在第一个轴上覆盖一个透明轴,并在其中绘制第二个数据框,但是您需要同时更新两个轴的 x 限制(类似于双胞胎)。但是,我认为这需要做更多的工作并且有更多的缺点:例如,您不能再轻松地以交互方式缩放到特定区域,除非您确保两个轴都通过它们的 x 限制链接。实际上,最简单的方法是通过“扰乱索引”来考虑该偏移量。

至于刻度标签,您可以通过指定 x-tick 格式轻松更改格式,使其不显示年份:

import matplotlib.dates as mdates
month_day_fmt = mdates.DateFormatter('%b %d') # "Locale's abbreviated month name. + day of the month"
ax.xaxis.set_major_formatter(month_day_fmt)

看看 matplotlib API example for specifying the date format .

关于python - 比较单个图 python 上的多年数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37596714/

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