时间序列数据有许多定义,它们以不同的方式表示相同的含义。一个简单的定义是时间序列数据包括附加到顺序时间点的数据点。

时间序列数据的来源是周期性的测量或观测。许多行业都存在时间序列数据。举几个例子:

  • 一段时间内的股票价格

  • 每天,每周,每月的销售额

  • 流程中的周期性度量

  • 一段时间内的电力或天然气消耗率

在这篇文章中,我将列出20个要点,帮助你全面理解如何用Pandas处理时间序列数据。

1.不同形式的时间序列数据

时间序列数据可以是特定日期、持续时间或固定的自定义间隔的形式。

时间戳可以是给定日期的一天或一秒,具体取决于精度。例如,' 2020-01-01 14:59:30 '是基于秒的时间戳。

2.时间序列数据结构

Pandas提供灵活和高效的数据结构来处理各种时间序列数据。

除了这3个结构之外,Pandas还支持日期偏移概念,这是一个与日历算法相关的相对时间持续时间。

3.创建一个时间戳

最基本的时间序列数据结构是时间戳,可以使用to_datetimeTimestamp函数创建

import pandas as pdpd.to_datetime('2020-9-13')Timestamp('2020-09-13 00:00:00')pd.Timestamp('2020-9-13')Timestamp('2020-09-13 00:00:00')

4.访问按时间戳保存的信息

我们可以获得存储在时间戳中的关于日、月和年的信息。

a = pd.Timestamp('2020-9-13')a.day_name()'Sunday'a.month_name()'September'a.day13a.month9a.year2020

5. 隐藏信息访问

时间戳对象还保存有关日期算法的信息。例如,我们可以问这一年是不是闰年。以下是我们可以获得的一些更具体的信息:

b = pd.Timestamp('2020-9-30')b.is_month_endTrueb.is_leap_yearTrueb.is_quarter_startFalseb.weekofyear40

6. 欧洲风格的日期

我们可以使用to_datetime函数处理欧洲风格的日期(即日期在先)。dayfirst参数被设置为True。

pd.to_datetime('10-9-2020', dayfirst=True)Timestamp('2020-09-10 00:00:00')pd.to_datetime('10-9-2020')Timestamp('2020-10-09 00:00:00')

注意:如果第一项大于12,Pandas会知道它不能是月。

pd.to_datetime('13-9-2020')Timestamp('2020-09-13 00:00:00')

7. 将数据格式转换为时间序列数据

to_datetime函数可以将具有适当列的数据名称转换为时间序列。考虑以下数据格式:

pd.to_datetime(df)0   2020-04-13 1   2020-05-16 2   2019-04-11 dtype: datetime64[ns]

7.时间戳之外的时间表示

在现实生活中,我们几乎总是使用连续的时间序列数据,而不是单独的日期。而且,Pandas处理顺序时间序列数据非常简单。

我们可以将日期列表传递给to_datetime函数。

pd.to_datetime(['2020-09-13', '2020-08-12', '2020-08-04', '2020-09-05'])DatetimeIndex(['2020-09-13', '2020-08-12', '2020-08-04', '2020-09-05'], dtype='datetime64[ns]', freq=None)

返回的对象是一个DatetimeIndex。

还有一些更实用的方法来创造一系列的时间数据。

9. 用to_datetime和to_timedelta创建时间序列

可以通过将TimedeltaIndex添加到时间戳中来创建DatetimeIndex。

pd.to_datetime('10-9-2020') + pd.to_timedelta(np.arange(5), 'D')

“D”用来表示“day”,但是也有很多其他的选择。

10. date_range函数

它提供了一种更灵活的创建DatetimeIndex的方法。

pd.date_range(start='2020-01-10', periods=10, freq='M')

参数的作用是:指定索引中的项数。freq 是频率,“M”表示一个月的最后一天。

就freq参数而言,date_range非常灵活。

pd.date_range(start='2020-01-10', periods=10, freq='6D')

我们创建了一个频率为6天的数据。

11. period_range函数

它返回一个PeriodIndex。语法类似于date_range函数。

pd.period_range('2018', periods=10, freq='M')

12. timedelta_range函数

它返回一个TimedeltaIndex。

pd.timedelta_range(start='0', periods=24, freq='H')

13.时区

默认情况下,Panda的时间序列对象没有指定的时区。

dates = pd.date_range('2019-01-01','2019-01-10')dates.tz is NoneTrue

我们可以使用tz_localize方法为这些对象分配时区。

dates_lcz = dates.tz_localize('Europe/Berlin')dates_lcz.tz<DstTzInfo 'Europe/Berlin' LMT+0:53:00 STD>

14. 创建一个具有指定时区的时间序列

我们还可以使用tz关键字参数创建带有时区的时间序列对象。

pd.date_range('2020-01-01', periods = 5, freq = 'D', tz='US/Eastern')

15. 偏移量

假设我们有一个时间序列索引,并且想为所有的日期偏移一个特定的时间。

A = pd.date_range('2020-01-01', periods=10, freq='D')A

让我们给这个数据加上一周的偏移。

A + pd.offsets.Week()

16. 移动时间序列数据

时间序列数据分析可能需要移数据点进行比较。移位函数可以移位数据。

A.shift(10, freq='M')

17. Shift vs tshift

  • 移动:移动数据

  • tshift:移动时间索引

让我们创建一个带有时间序列索引的dataframe,并绘制它以查看shift和tshift之间的区别。

dates = pd.date_range('2020-03-01', periods=30, freq='D')values = np.random.randint(10, size=30)df = pd.DataFrame({'values':values}, index=dates)df.head()

让我们把原始的时间序列和移位的时间序列一起画出来。

import matplotlib.pyplot as pltfig, axs = plt.subplots(nrows=3, figsize=(10,6), sharey=True)plt.tight_layout(pad=4)df.plot(ax=axs[0], legend=None)df.shift(10).plot(ax=axs[1], legend=None)df.tshift(10).plot(ax=axs[2], legend=None)

18. 用取样函数重新采样

时间序列数据的另一个常见操作是重采样。根据任务的不同,我们可能需要以更高或更低的频率重新采样数据。

Resample创建指定内部的组(或容器),并允许您对组进行合并。

让我们创建一个包含30个值和一个时间序列索引的Panda系列。

A = pd.date_range('2020-01-01', periods=30, freq='D')values = np.random.randint(10, size=30)S = pd.Series(values, index=A)

以下将返回3天时间内的平均值。

S.resample('3D').mean()

在某些情况下,我们可能对特定频率的值感兴趣。函数返回指定间隔结束时的值。例如,在上一步创建的系列中,我们可能只需要每3天(而不是平均3天)一次的值。

S.asfreq('3D')

20.滚动

滚动对于时间序列数据是一种非常有用的操作。滚动意味着创建一个具有指定大小的滚动窗口,并对该窗口中的数据执行计算,当然,该窗口将滚动数据。下图解释了滚动的概念。

值得注意的是,计算开始时整个窗口都在数据中。换句话说,如果窗口的大小为3,那么第一次合并将在第三行进行。

让我们为我们的数据应用一个3天的滚动窗口。

S.rolling(3).mean()[:10]

结论

我们已经全面介绍了用Pandas进行时间序列分析。值得注意的是,Pandas提供了更多的时间序列分析。

感谢您的阅读。如果你有任何反馈,请告诉我。

作者:Soner Yıldırım

deephub翻译组:孟翔杰

pandas rolling方法_Pandas处理时间序列数据的20个关键知识点相关推荐

  1. panda提取时间戳中的日期_Pandas处理时间序列数据的20个关键知识点

    时间序列数据有许多定义,它们以不同的方式表示相同的含义.一个简单的定义是时间序列数据包括附加到顺序时间点的数据点. 时间序列数据的来源是周期性的测量或观测.许多行业都存在时间序列数据.举几个例子: 一 ...

  2. Pandas处理时间序列数据的20个关键知识点

    ​ 时间序列数据有许多定义,它们以不同的方式表示相同的含义.一个简单的定义是时间序列数据包括附加到顺序时间点的数据点. ​ 时间序列数据的来源是周期性的测量或观测.许多行业都存在时间序列数据.举几个例 ...

  3. pandas rolling方法_【干货】pandas相关工具包

    未来更名:ChallengeHub  1 Pandas 介绍 Pandas是python的一个数据分析包,最初由AQR Capital Management于2008年4月开发,并于2009年底开源出 ...

  4. resample函数_使用Pandas的resample函数处理时间序列数据的技巧

    时间序列数据在数据科学项目中很常见. 通常,可能会对将时序数据重新采样到要分析数据的频率或从数据中汲取更多见解的频率感兴趣. 在本文中,我们将介绍一些使用Pandas resample()函数对时间序 ...

  5. python resample函数_使用Pandas的resample函数处理时间序列数据的技巧

    时间序列数据在数据科学项目中很常见. 通常,可能会对将时序数据重新采样到要分析数据的频率或从数据中汲取更多见解的频率感兴趣. 在本文中,我们将介绍一些使用Pandas resample()函数对时间序 ...

  6. Pandas数据处理方法(包括数据库数据和普通文件数据)

    pandas是一个强大的分析结构化数据的工具集:它的使用基础是Numpy(提供高性能的矩阵运算):用于数据挖掘和数据分析,同时也提供数据清洗功能. Pandas中常见的数据结构有两种: Series ...

  7. 使用Pandas的resample函数处理时间序列数据的技巧

    时间序列数据在数据科学项目中很常见. 通常,可能会对将时序数据重新采样到要分析数据的频率或从数据中汲取更多见解的频率感兴趣. 在本文中,我们将介绍一些使用Pandas resample()函数对时间序 ...

  8. 时间序列数据的预处理

    来源:Deephub Imba 本文约2600字,建议阅读5分钟 在本文中,我们将看到在深入研究数据建模部分之前应执行的常见时间序列预处理步骤和与时间序列数据相关的常见问题. 时间序列数据随处可见,要 ...

  9. PostgreSQL中的大容量空间探索时间序列数据存储

    欧洲航天局科学数据中心(the European Space Agency Science Data Center,简称ESDC)利用TimescaleDB扩展切换到用PostgreSQL来存储他们的 ...

最新文章

  1. 原创 | 清华开源迁移学习算法库
  2. 异步I/O 设备内核对象,事件内核对象,可提醒I/O 接收I/O通知
  3. pythonweb扫描器_Python安全工具之web目录扫描
  4. arch模型的思路_ARCH模型
  5. 如何抓住重点,系统高效地学习数据结构与算法?
  6. leetcode343. 整数拆分(思路+详解)
  7. 诺基亚S40手机联系人导入安卓手机
  8. C语言 数组排序 – 选择法排序 - C语言零基础入门教程
  9. 信息学奥赛一本通(1202:Pell数列)
  10. android(八)、触摸事件分发
  11. Ajax Control Toolkit 控件介绍
  12. Qt5,信号槽关联错误
  13. UI自动化测试(APP测试)
  14. 【微信防封域名】【微信不死域名】【微信域名白名单】
  15. 西安交大软件学院推免远程面试夏令营分享
  16. 生信工作流框架搭建 | 从零开始入门指南 - 00工作流之华山论剑
  17. P85.2.(2)回文是指正读反读均相同的字符序列,如“abba”和“abdba”均是回文,但“good”不是回文。试写一个算法判定给定的字符序列是否是回文。(提示:将一半的字符入栈)(C语言描述)
  18. Springboot敏感字段脱敏
  19. 7月书讯 (上)| 宝藏新书助你“乘风破浪”
  20. 联想m9870T微型计算机,联想Z5s如何指纹解锁拆微信红包 Lenovo Z5s如何使用红包助手...

热门文章

  1. CentOs下部署Core环境
  2. pgsql merge方法
  3. Power oj2498/DP/递推
  4. 如何在面试中发现优秀程序员
  5. 硬盘安装Debian
  6. C++11新特性之std::bind()
  7. 一行代码打印python之禅
  8. C语言之共享内存shm_open(二十五)
  9. Mac安装apktool/dex2jar/jd-gui逆向工具
  10. windows获取cmd回显以及获取路径