写点什么

Python 时间序列分析简介(2)

发布于: 2020 年 10 月 09 日

这篇文章继续为同学们讲解第二部分内容。



使用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绘制时间序列数据



发布于: 2020 年 10 月 09 日阅读数: 33
用户头像

微信公众号:计算机与AI 2020.09.19 加入

数据科学科班出身,专注分享计算机和人工智能相关知识。

评论

发布
暂无评论
Python时间序列分析简介(2)