Pandas库分析-时间序列的处理

这篇具有很好参考价值的文章主要介绍了Pandas库分析-时间序列的处理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在使用Python进行数据分析时,经常会遇到时间日期格式处理和转换,特别是分析和挖掘与时间相关的数据,比如量化交易就是从历史数据中寻找股价的变化规律。Python中自带的处理时间的模块有datetime,NumPy库也提供了相应的方法,Pandas作为Python环境下的数据分析库,更是提供了强大的日期数据处理的功能,是处理时间序列的利器。

1、生成日期序列

主要提供pd.data_range()和pd.period_range()两个方法,给定参数有起始时间、结束时间、生成时期的数目及时间频率(freq='M’月,'D’天,‘W’,周,'Y’年)等。

两种主要区别在于pd.date_range()生成的是DatetimeIndex格式的日期序列;pd.period_range()生成的是PeriodIndex格式的日期序列。

以下通过生成月时间序列和周时间序列来对比下:

date_rng = pd.date_range('2019-01-01', freq='M', periods=12)

print(f'month date_range():\n{date_rng}')

"""

date_range():

DatetimeIndex(['2019-01-31', '2019-02-28', '2019-03-31', '2019-04-30',

'2019-05-31', '2019-06-30', '2019-07-31', '2019-08-31',

'2019-09-30', '2019-10-31', '2019-11-30', '2019-12-31'],

dtype='datetime64[ns]', freq='M')

"""

period_rng = pd.period_range('2019/01/01', freq='M', periods=12)

print(f'month period_range():\n{period_rng}')

"""

period_range():

PeriodIndex(['2019-01', '2019-02', '2019-03', '2019-04', '2019-05', '2019-06',

'2019-07', '2019-08', '2019-09', '2019-10', '2019-11', '2019-12'],

dtype='period[M]', freq='M')

"""

date_rng = pd.date_range('2019-01-01', freq='W-SUN', periods=12)

print(f'week date_range():\n{date_rng}')

"""

week date_range():

DatetimeIndex(['2019-01-06', '2019-01-13', '2019-01-20', '2019-01-27',

'2019-02-03', '2019-02-10', '2019-02-17', '2019-02-24',

'2019-03-03', '2019-03-10', '2019-03-17', '2019-03-24'],

dtype='datetime64[ns]', freq='W-SUN')

"""

period_rng=pd.period_range('2019-01-01',freq='W-SUN',periods=12)

print(f'week period_range():\n{period_rng}')

"""

week period_range():

PeriodIndex(['2018-12-31/2019-01-06', '2019-01-07/2019-01-13',

'2019-01-14/2019-01-20', '2019-01-21/2019-01-27',

'2019-01-28/2019-02-03', '2019-02-04/2019-02-10',

'2019-02-11/2019-02-17', '2019-02-18/2019-02-24',

'2019-02-25/2019-03-03', '2019-03-04/2019-03-10',

'2019-03-11/2019-03-17', '2019-03-18/2019-03-24'],

dtype='period[W-SUN]', freq='W-SUN')

"""

date_rng = pd.date_range('2019-01-01 00:00:00', freq='H', periods=12)

print(f'hour date_range():\n{date_rng}')

"""

hour date_range():

DatetimeIndex(['2019-01-01 00:00:00', '2019-01-01 01:00:00',

'2019-01-01 02:00:00', '2019-01-01 03:00:00',

'2019-01-01 04:00:00', '2019-01-01 05:00:00',

'2019-01-01 06:00:00', '2019-01-01 07:00:00',

'2019-01-01 08:00:00', '2019-01-01 09:00:00',

'2019-01-01 10:00:00', '2019-01-01 11:00:00'],

dtype='datetime64[ns]', freq='H')

"""

period_rng=pd.period_range('2019-01-01 00:00:00',freq='H',periods=12)

print(f'hour period_range():\n{period_rng}')

"""

hour period_range():

PeriodIndex(['2019-01-01 00:00', '2019-01-01 01:00', '2019-01-01 02:00',

'2019-01-01 03:00', '2019-01-01 04:00', '2019-01-01 05:00',

'2019-01-01 06:00', '2019-01-01 07:00', '2019-01-01 08:00',

'2019-01-01 09:00', '2019-01-01 10:00', '2019-01-01 11:00'],

dtype='period[H]', freq='H')

"""

2、生成Timestamp对象及转换

创建一个Timestamp时间戳对象有pd.Timestamp()方法和pd.to_datetime()方法。如下所示:

ts=pd.Timestamp(2019,1,1)

print(f'pd.Timestamp()-1:{ts}')

#pd.Timestamp()-1:2019-01-01 00:00:00

ts=pd.Timestamp(dt(2019,1,1,hour=0,minute=1,second=1))

print(f'pd.Timestamp()-2:{ts}')

#pd.Timestamp()-2:2019-01-01 00:01:01

ts=pd.Timestamp("2019-1-1 0:1:1")

print(f'pd.Timestamp()-3:{ts}')

#pd.Timestamp()-3:2019-01-01 00:01:01

print(f'pd.Timestamp()-type:{type(ts)}')

#pd.Timestamp()-type:<class 'pandas._libs.tslibs.timestamps.Timestamp'>

#dt=pd.to_datetime(2019,1,1) 不支持

dt=pd.to_datetime(dt(2019,1,1,hour=0,minute=1,second=1))

print(f'pd.to_datetime()-1:{dt}')

#pd.to_datetime()-1:2019-01-01 00:01:01

dt=pd.to_datetime("2019-1-1 0:1:1")

print(f'pd.to_datetime()-2:{dt}')

#pd.to_datetime()-2:2019-01-01 00:01:01

print(f'pd.to_datetime()-type:{type(dt)}')

#pd.to_datetime()-type:<class 'pandas._libs.tslibs.timestamps.Timestamp'>

#pd.to_datetime生成自定义时间序列

dtlist=pd.to_datetime(["2019-1-1 0:1:1", "2019-3-1 0:1:1"])

print(f'pd.to_datetime()-list:{dtlist}')

#pd.to_datetime()-list:DatetimeIndex(['2019-01-01 00:01:01', '2019-03-01 00:01:01'], dtype='datetime64[ns]', freq=None)

#时间戳转换为period月时期

pr = ts.to_period('M')

print(f'ts.to_period():{pr}')

#ts.to_period():2019-01

print(f'pd.to_period()-type:{type(pr)}')

#pd.to_period()-type:<class 'pandas._libs.tslibs.period.Period'>

3、生成period对象及转换

#定义时期period

per=pd.Period('2019')

print(f'pd.Period():{per}')

#pd.Period():2019

per_del=pd.Period('2019')-pd.Period('2018')

print(f'2019和2018间隔{per_del}年')#可以直接+、-整数(代表年)

#2019和2018间隔1年

#时期转换为时间戳

print(per.to_timestamp(how='end'))#2019-12-31 00:00:00

print(per.to_timestamp(how='start'))#2019-01-01 00:00:00

4、生成时间间隔Timedelta

#生成时间间隔Timedelta

print(pd.Timedelta(days=5, minutes=50, seconds=20, milliseconds=10, microseconds=10, nanoseconds=10))

#5 days 00:50:20.010010

#获取当前时间

now=pd.datetime.now()

#计算当前时间往后50天的日期

dt=now+pd.Timedelta(days=50)

print(f'当前时间是{now}, 50天后时间是{dt}')

#当前时间是2019-06-08 17:59:31.726065, 50天后时间是2019-07-28 17:59:31.726065

#只显示年月日

print(dt.strftime('%Y-%m-%d'))#2019-07-28

5、重采样及频率转换

#asfreq 按季度显示索引值

#'DatetimeIndex' object has no attribute 'asfreq'

date=pd.date_range('1/1/2018', periods=20, freq='D')

tsdat_series=pd.Series(range(20),index=date)

tsp_series=tsdat_series.to_period('D')

print(tsp_series.index.asfreq('Q'))

date=pd.period_range('1/1/2018', periods=20, freq='D')

tsper_series=pd.Series(range(20),index=date)

print(tsper_series.index.asfreq('Q'))

"""

PeriodIndex(['2018Q1', '2018Q1', '2018Q1', '2018Q1', '2018Q1', '2018Q1',

'2018Q1', '2018Q1', '2018Q1', '2018Q1', '2018Q1', '2018Q1',

'2018Q1', '2018Q1', '2018Q1', '2018Q1', '2018Q1', '2018Q1',

'2018Q1', '2018Q1'],

dtype='period[Q-DEC]', freq='Q-DEC')

"""

#resample 按季度统计并显示

print(tsdat_series.resample('Q').sum().to_period('Q'))

"""

2018Q1 190

Freq: Q-DEC, dtype: int64

"""

#groupby 按周进行汇总求平均值

print(tsdat_series.groupby(lambda x:x.weekday).mean())

"""

0 7.0

1 8.0

2 9.0

3 10.0

4 11.0

5 12.0

6 9.5

dtype: float64

"""

之前也跟大家有讲过pandas的相关教程,大家有不理解的地方可回过头复习一下,更多的Python学习教程Python学习路线会继续跟大家分享!文章来源地址https://www.toymoban.com/news/detail-465338.html

到了这里,关于Pandas库分析-时间序列的处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 时间序列分析——基于R | 第2章 时间序列的预处理习题代码

    1.1判断该序列是否平稳 1.2样本自相关系数 1.3序列自相关图 2.1绘制时序图,判断平稳性 从时序图中可以看出,该序列存在较明显的季节性,同时也存在一定的趋势性。 2.2计算样本自相关系数 2.3绘制自相关图 从自相关图中可以看出,该序列存在较强的季节性和自相关性,不具

    2023年04月18日
    浏览(210)
  • Flink的流式数据处理与时间序列分析

    Apache Flink 是一个流处理框架,用于实时数据处理和分析。它支持大规模数据流处理,具有高吞吐量和低延迟。Flink 可以处理各种数据源和数据接收器,如 Kafka、HDFS、TCP 流等。 时间序列分析是一种用于分析时间序列数据的方法,用于发现数据中的趋势、季节性和随机性。时间

    2024年02月21日
    浏览(34)
  • Python时间序列分析--ARIMA模型实战案例

    **本文将介绍使用Python来完成时间序列分析ARIMA模型的完整步骤与流程,绘制时序图,平稳性检验,单位根检验,白噪声检验,模型定阶,参数估计,模型检验等完整步骤。Python建立时间序列分析–ARIMA模型实战案例 时间序列指的是将带有同一指标单位的数值按照产生时间的先

    2024年01月17日
    浏览(37)
  • 用Python语言进行时间序列ARIMA模型分析

    应用时间序列 时间序列分析是一种重要的数据分析方法,应用广泛。以下列举了几个时间序列分析的应用场景: 1.经济预测:时间序列分析可以用来分析经济数据,预测未来经济趋势和走向。例如,利用历史股市数据和经济指标进行时间序列分析,可以预测未来股市的走向。

    2024年02月03日
    浏览(53)
  • Python探索金融数据进行时间序列分析和预测

    大家好,时间序列分析是一种基于历史数据和趋势分析进行预测的统计技术。它在金融和经济领域非常普遍,因为它可以准确预测趋势并做出明智的决策。本文将使用Python来探索经济和金融数据,执行统计分析,并创建时间序列预测。 我们将在本教程中使用NumPy、Pandas和Mat

    2024年02月16日
    浏览(40)
  • ARIMA模型时间序列数据分析(附python代码)

    ARIMA模型建模流程  1 )平稳性检验与差分处理 我们选取原始数据 bus 中的“ prf_get_person_count ”列,并截取前 32 个站点的数据进行平稳性检验,这里采用的是 ADF 检验确定数据的平稳性,导入 statsmodels 包下的 adfuller 函数,该函数返回 adf 值与概率 p 值。若原始序列不平稳,就

    2024年02月01日
    浏览(42)
  • 【2023 年第二届钉钉杯大学生大数据挑战赛】 初赛 B:美国纽约公共自行车使用量预测分析 问题三时间序列预测Python代码分析

    【2023 年第二届钉钉杯大学生大数据挑战赛】 初赛 B:美国纽约公共自行车使用量预测分析 问题一Python代码分析 【2023 年第二届钉钉杯大学生大数据挑战赛】 初赛 B:美国纽约公共自行车使用量预测分析 问题二Python代码分析 【2023 年第二届钉钉杯大学生大数据挑战赛】 初赛

    2024年02月15日
    浏览(54)
  • Python数据分析案例11——灰色预测法预测时间序列数据

    本次案例来自2022华为杯第E题,第2小问。给定了2012.01-2022.03的土壤湿度的月度数据,需要预测2022.04-2023.12的土壤湿度的月度数据。典型的时间序列预测。 传统的时间序列预测肯定是ARIMA模型,可以参考我之前的文章。Python统计学10——时间序列分析自回归模型(ARIMA) 现在流行的

    2024年02月06日
    浏览(46)
  • Python时间序列分析库介绍:statsmodels、tslearn、tssearch、tsfresh

    时间序列分析在金融和医疗保健等领域至关重要,在这些领域,理解随时间变化的数据模式至关重要。在本文中,我们将介绍四个主要的Python库——statmodels、tslearn、tssearch和tsfresh——每个库都针对时间序列分析的不同方面进行了定制。这些库为从预测到模式识别的任务提供

    2024年02月08日
    浏览(31)
  • statsmodels专栏4——深度解析:Python中的Statsmodels库时间序列分析

    时间序列分析在数据科学领域中占据着重要地位,它不仅帮助我们理解数据的趋势和模式,还能够提供对未来趋势的预测。在众多时间序列分析工具中,Python中的Statsmodels库以其强大的功能和灵活性备受青睐。本文将深入探讨Statsmodels库在时间序列分析中的应用,聚焦于移动平

    2024年03月16日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包