这篇文章继续为同学们讲解第二部分内容。
使用Pandas进行时间重采样
考虑将重采样为 groupby() ,在此我们可以基于任何列进行分组,然后应用聚合函数来检查结果。而在“时间序列”索引中,我们可以基于任何规则重新采样,在该 规则 中,我们指定要基于“年”还是“月”还是“天”还是其他。
我们重新采样时间序列索引的一些重要规则是:
M =月末
A =年终
MS =月开始
AS =年开始
让我们将其应用于我们的数据集。
假设我们要在每年年初计算运输的平均值。我们可以通过在调用重采样做这个 规则=“AS” 的年度开始,然后调用聚合函数 平均值 就可以了。
我们可以看到它的 head 如下。
在这里,我们基于每年的开始(请记住“ AS”的功能)对索引进行了重新采样,然后在其中应用了 均值 函数,现在我们有了每年年初的均值。
我们甚至可以在resample中使用我们自己的自定义函数 。假设我们要使用自定义函数来计算每年的总和。我们可以按照以下步骤进行操作。
然后我们可以通过重新采样来应用它,如下所示。
我们可以通过下面代码完成,它们是等价的。
滚动时间序列
滚动也类似于时间重采样,但在滚动中,我们采用任何大小的窗口并对其执行任何功能。简而言之,我们可以说大小为k的滚动窗口 表示 k个连续值。
让我们来看一个例子。如果要计算10天的滚动平均值,可以按以下方式进行操作。
现在在这里,我们可以看到前10个值是 NaN, 因为没有足够的值来计算前10个值的滚动平均值。它从第11个值开始计算平均值,然后继续。
同样,我们可以按照以下方式在30天的时间内检查出最大值。
请注意,在这里我添加 [30:] 只是因为前30个条目(即第一个窗口)没有值来计算 max 函数,所以它们是 NaN,并且为了添加屏幕快照,以显示前20个值,我只是跳过了前30行,但实际上您不需要这样做。
在这里,我们可以看到在30天的滚动窗口中有最大值。
使用Pandas绘制时间序列数据
有趣的是,Pandas提供了一套很好的内置可视化工具和技巧,可以帮助您可视化任何类型的数据。
只需 在DataFrame上调用.plot函数即可获得基本线图 。
在这里,我们可以看到随时间变化的制造品装运的价值。请注意,熊猫对我们的x轴(时间序列索引)的处理效果很好。
我们可以通过 在图上使用.set添加标题和y标签来进一步对其进行修改 。
同样,我们可以通过改变土地大小 figsize 参数 .plot。
现在,让我们绘制每年初始值的平均值。我们可以 在使用规则“ AS”重新采样后通过调用.plot来完成此操作, 因为“ AS”是年初的规则。
我们还可以通过 在.plot顶部调用.bar来绘制每年开始的平均值 的 条形图。
类似地,我们可以绘制月初的滚动平均值和正常平均值,如下所示。
在这里,首先,我们通过对规则=“ MS”(月开始)进行重新采样来绘制每个月开始的平均值。然后我们设置了 autoscale(tight = True)。这将删除多余的绘图部分,该部分为空。然后,我们绘制了30天窗口中的滚动平均值。请记住,前30天为空,您将在图中观察到这一点。然后我们设置了标签,标题和图例。
该图的输出为
请注意,滚动平均值中缺少前30天,并且由于它是滚动平均值,与重采样相比,它非常平滑。
同样,您可以根据自己的选择绘制特定的日期。假设我要绘制从1995年到2005年的每年年初的最大值。我可以按以下方式进行绘制。
在这里,我们指定了 xlim 和 ylim。看看我如何在xlim中添加日期。主要模式是 xlim = ['开始日期','结束日期']。
在这里,您可以看到从1999年到2014年年初的最大值输出。
学习成果
这使我们到了本文的结尾。希望您现在已经了解
- 在Pandas中正确加载时间序列数据集
- 时间序列数据索引
- 使用Pandas进行时间重采样
- 滚动时间序列
- 使用Pandas绘制时间序列数据