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

简介: Pandas处理时间序列数据的20个关键知识点

640.png

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

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

  • 一段时间内的股票价格
  • 每天,每周,每月的销售额
  • 流程中的周期性度量
  • 一段时间内的电力或天然气消耗率

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

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

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

640.png

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

2.时间序列数据结构

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

640.png

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

3.创建一个时间戳

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

importpandasaspdpd.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函数可以将具有适当列的数据名称转换为时间序列。考虑以下数据格式:

640.png

pd.to_datetime(df)02020-04-1312020-05-1622019-04-11dtype: 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')

640.png

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

10. date_range函数

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

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

640.png

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

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

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

640.png

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

11. period_range函数

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

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

640.png

12. timedelta_range函数

它返回一个TimedeltaIndex。

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

640.png

13.时区

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

dates=pd.date_range('2019-01-01','2019-01-10')
dates.tzisNoneTrue

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

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

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

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

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

640.png

15. 偏移量

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

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

640.png

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

A+pd.offsets.Week()

640.png

16. 移动时间序列数据

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

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

640.png

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()

640.png

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

importmatplotlib.pyplotaspltfig, 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)

640.png

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()

640.png

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

S.asfreq('3D')

640.png

20.滚动

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

640.png

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

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

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

640.png

结论

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

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

目录
相关文章
|
5月前
|
数据采集 安全 数据挖掘
Pandas数据合并:10种高效连接技巧与常见问题
在数据分析中,数据合并是常见且关键的步骤。本文针对合并来自多个来源的数据集时可能遇到的问题,如列丢失、重复记录等,提供系统解决方案。基于对超1000个复杂数据集的分析经验,总结了10种关键技术,涵盖Pandas库中`merge`和`join`函数的使用方法。内容包括基本合并、左连接、右连接、外连接、基于索引连接、多键合并、数据拼接、交叉连接、后缀管理和合并验证等场景。通过实际案例与技术原理解析,帮助用户高效准确地完成数据整合任务,提升数据分析效率。
413 13
Pandas数据合并:10种高效连接技巧与常见问题
|
8月前
|
监控 物联网 数据处理
Pandas高级数据处理:数据流式计算
本文介绍了如何使用 Pandas 进行流式数据处理。流式计算能够实时处理不断流入的数据,适用于金融交易、物联网监控等场景。Pandas 虽然主要用于批处理,但通过分块读取文件、增量更新 DataFrame 和使用生成器等方式,也能实现简单的流式计算。文章还详细讨论了内存溢出、数据类型不一致、数据丢失或重复及性能瓶颈等常见问题的解决方案,并建议在处理大规模数据时使用专门的流式计算框架。
472 100
Pandas高级数据处理:数据流式计算
|
9月前
|
数据采集 存储 供应链
Pandas数据应用:库存管理
本文介绍Pandas在库存管理中的应用,涵盖数据读取、清洗、查询及常见报错的解决方法。通过具体代码示例,讲解如何处理多样数据来源、格式不一致、缺失值和重复数据等问题,并解决KeyError、ValueError等常见错误,帮助提高库存管理效率和准确性。
264 72
|
8月前
|
数据采集 数据可视化 数据处理
Pandas高级数据处理:数据仪表板制作
《Pandas高级数据处理:数据仪表板制作》涵盖数据清洗、聚合、时间序列处理等技巧,解决常见错误如KeyError和内存溢出。通过多源数据整合、动态数据透视及可视化准备,结合性能优化与最佳实践,助你构建响应快速、数据精准的商业级数据仪表板。适合希望提升数据分析能力的开发者。
177 31
|
8月前
|
缓存 数据可视化 BI
Pandas高级数据处理:数据仪表板制作
在数据分析中,面对庞大、多维度的数据集(如销售记录、用户行为日志),直接查看原始数据难以快速抓住重点。传统展示方式(如Excel表格)缺乏交互性和动态性,影响决策效率。为此,我们利用Python的Pandas库构建数据仪表板,具备数据聚合筛选、可视化图表生成和性能优化功能,帮助业务人员直观分析不同品类商品销量分布、省份销售额排名及日均订单量变化趋势,提升数据洞察力与决策效率。
133 12
|
8月前
|
消息中间件 数据挖掘 数据处理
Pandas高级数据处理:数据流式计算
在大数据时代,Pandas作为Python强大的数据分析库,在处理结构化数据方面表现出色。然而,面对海量数据时,如何实现高效的流式计算成为关键。本文探讨了Pandas在流式计算中的常见问题与挑战,如内存限制、性能瓶颈和数据一致性,并提供了详细的解决方案,包括使用`chunksize`分批读取、向量化操作及`dask`库等方法,帮助读者更好地应对大规模数据处理需求。
160 17
|
8月前
|
数据采集 存储 数据可视化
Pandas高级数据处理:数据报告生成
Pandas 是数据分析领域不可或缺的工具,支持多种文件格式的数据读取与写入、数据清洗、筛选与过滤。本文从基础到高级,介绍如何使用 Pandas 进行数据处理,并解决常见问题和报错,如数据类型不一致、时间格式解析错误、内存不足等。最后,通过数据汇总、可视化和报告导出,生成专业的数据报告,帮助你在实际工作中更加高效地处理数据。
196 8
|
8月前
|
数据采集 并行计算 数据可视化
Pandas高级数据处理:数据报告生成实战指南
数据报告生成面临数据质量、计算性能、呈现形式和自动化等核心挑战。常见问题包括缺失值导致统计失真、内存溢出及可视化困难。解决方案涵盖数据清洗、分块处理、安全绘图模板等。通过模块化设计、异常处理机制和性能优化策略,如使用`category`类型、并行计算等,可大幅提升效率。最佳实践建议建立数据质量检查清单、版本控制和自动化测试框架,确保系统具备自适应能力,提升报告生成效率300%以上。
163 12
|
9月前
|
数据采集 供应链 数据可视化
Pandas数据应用:供应链优化
在当今全球化的商业环境中,供应链管理日益复杂。Pandas作为Python的强大数据分析库,能有效处理库存、物流和生产计划中的大量数据。本文介绍如何用Pandas优化供应链,涵盖数据导入、清洗、类型转换、分析与可视化,并探讨常见问题及解决方案,帮助读者在供应链项目中更加得心应手。
163 21
|
9月前
|
机器学习/深度学习 搜索推荐 数据挖掘
Pandas数据应用:广告效果评估
在数字化营销中,广告效果评估至关重要。Pandas作为Python的强大数据分析库,在处理广告数据时表现出色。本文介绍如何使用Pandas进行广告效果评估,涵盖数据读取、预览、缺失值处理、数据类型转换及常见报错解决方法,并通过代码案例详细解释。掌握这些技能,可为深入分析广告效果打下坚实基础。
149 17