在进行金融数据的分析以及量化研究时,总是避免不了和时间序列的数据打交道,常见的时间序列的数据有比方说一天内随着时间变化的温度序列,又或者是交易时间内不断波动的股票价格序列,今天小编就为大家来介绍一下如何用“Pandas”模块来处理时间序列的数据

01

创建一个时间戳

首先我们需要导入我们所需要用到的模块,并且随机创建一个时间戳,有两种方式来创建,如下所示

import pandas as pd
import numpy as np
from datetime import datetimepd.to_datetime('2021-05-20')  ##output: Timestamp('2021-05-20 00:00:00')
pd.Timestamp('2021-05-20')  ##output: Timestamp('2021-05-20 00:00:00')

02

访问时间信息

我们可以来查看一下这个时间戳所代表的年、月、日等信息

a = pd.Timestamp('2021-10-01')
a.day_name()    ## Friday,看来今年的10月1日是周五哈?
a.month_name()  ## October 十月份
a.day(), a.month(), a.year()  ## 1, 10, 2021,查看年月日等信息

03

数据格式转化为时间序列

接下来我们做一些数据处理,例如将数据集中的“time_frame”转化为时间序列的格式

df = pd.DataFrame({"time_frame": ["2021-01-01", "2021-01-02", "2021-01-03", "2021-01-04", "2021-01-05"]})
df['time_frame'] = pd.to_datetime(df['time_frame'])

04

字符串转化成时间格式

要是我们想将里面的时间序列的数据变成字符串时,可以这么来操作

date_string = [str(x) for x in df['time_frame'].tolist()]

当然从字符串转换回去时间序列的数据,在“Pandas”中也有相应的方法可以来操作,例如

time_string = ['2021-02-14 00:00:00', '2021-02-14 01:00:00', '2021-02-14 02:00:00', '2021-02-14 03:00:00', '2021-02-14 04:00:00', '2021-02-14 05:00:00', '2021-02-14 06:00:00']
pd.to_datetime(time_string, infer_datetime_format = True)

当然我们还有其他的方式来实现将字符串转换成时间格式,例如

import datetime
text_1 = "2021-02-14"
datetime.datetime.strptime(text_1, '%Y-%m-%d')

05

提取时间格式背后的信息

在时间序列的数据处理过程当中,我们可能需要经常来实现下面的需求

l求某个日期对应的星期数(2021-06-22是第几周)

l判断一个日期是周几(2021-02-14是周几)

l判断某一日期是第几季度,等等

当数据集中的某一列已经转化为是“datetime64”的格式时,仅需要用到“dt”的方法,就可以快速得到相应的结果,例如

df = pd.DataFrame({"time_frame": ["2021-01-01", "2021-01-02", "2021-01-03", "2021-01-04", "2021-01-05", "2021-01-06", "2021-01-07", "2021-01-08"]})
df["time_frame"] = pd.to_datetime(df["time_frame"])
# 一周中的第几天
df.time_frame.dt.dayofweek[0]
# 返回对应额日期
df.time_frame.dt.date[0]
# 返回一周中的第几天,0对应周一,1对应周二df.time_frame.dt.weekday[0]

除此之外,下表列出了几个并不常见的方法和属性

06

关于date_range函数

可用于创建时间索引,并且时间频率可以灵活调整,参数“freq”就是用来调整时间频率的,“M”代表月份,“D”就代表的是天数了

pd.date_range(start='2021-02-14', periods=10, freq='M')

07

period_range和timedelta_range函数

和上面的“date_range”函数类似,用于创建时间索引

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

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

08

关于重采样resample

我们也可以对时间序列的数据集进行重采样,重采样就是将时间序列从一个频率转换到另一个频率的处理过程,主要分为降采样和升采样将高频率、间隔短的数据聚合到低频率、间隔长的过程称为是降采样,反之则是升采样.

我们先来创建一个包含30个值和一个时间序列索引的数据集

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

返回5天时间内的数据加总

S.resample('5D').sum()

09

关于滑动窗口“rolling”和“expanding”

因此便就有了滑动窗口这一个概念,简而言之就是将某个时点的数据衍生到包含这个时点的一段时间内做一个数据统计。首先我们先来创建需要用到的数据集

index = pd.date_range('2021-01-01',periods=30)
data = pd.DataFrame(np.arange(len(index)),index=index,columns=['test'])

主要有“rolling”方法和“expanding”方法,“rolling”方法考虑的是一定的时间段内的数据,而“expanding”考虑的则是之前所有的数据,例如

# 移动3个值,进行求和
data['sum'] = data.test.rolling(3).sum()
# 移动3个值,进行求平均数
data['mean'] = data.test.rolling(3).mean()

我们发现数据集中有一些缺失值,我们这里就可以使用“pandas”中特有的方法来进行填充,例如

data['mean'].fillna(method = 'backfill')

往期精彩回顾适合初学者入门人工智能的路线及资料下载机器学习及深度学习笔记等资料打印机器学习在线手册深度学习笔记专辑《统计学习方法》的代码复现专辑
AI基础下载机器学习的数学基础专辑温州大学《机器学习课程》视频
本站qq群851320808,加入微信群请扫码:

【Python】干货分享 | Pandas处理时间序列的数据相关推荐

  1. linux共享文件丢失,【干货分享】linux平台下数据文件被误删后,如何及时得知并进行恢复...

    原标题:[干货分享]linux平台下数据文件被误删后,如何及时得知并进行恢复 我们知道在windows平台下,一旦文件在程序中打开,则不能被删除,所以不存在误删数据文件的情况,如下图所示. 但是在LI ...

  2. 让0基础纯小白也能上手写Python,干货分享(二)

    上一篇文章测试工程师进阶之Python学习干货分享分享了Python基础知识,本次继续分享其它内容. 一.Python基本数据类型 1.数值类型:整数.浮点数.复数. 2.序列类型:字符串.列表.元组 ...

  3. 干货分享 | Windows系统下载SRA数据方法——生信小白亲测可行

    在开展二代测序相关课题研究时,经常需要上传或者下载SRA数据库中的数据,对熟悉Linux系统.懂代码的同学们来说是非常容易的事情.但像小编这一类看到代码两眼一抹黑的小白就有点难度了,尤其电脑还是Win ...

  4. 【Python基础】Pandas三种实现数据透视表的方法

    前言 主要想做的事情用大白话来讲就是:一个dataframe里面对于两个列做分组,最后算一个value对应于这两个列的分组来算值的矩阵,这个矩阵的行为其中一个列,列也为其中一个列. 新建一个df im ...

  5. python干货分享/网址总结

    一位程序员总结的<流畅的python>所有知识点: https://www.toutiao.com/a6476383114909188621/?tt_from=mobile_qq& ...

  6. python统计库存_通过Python中的pandas将每日库存数据转换为每周库存数据

    我有一个存储每日数据的DataFrame,如下所示:Date Open High Low Close Volume 2010-01-04 38.660000 39.299999 38.509998 3 ...

  7. python pandas_Python库Pandas数据可视化实战案例

    点击上方"爱好Python的胡同学",选择"星标"公众号 每晚八点,Python干货,不见不散! 数据可视化可以让我们很直观的发现数据中隐藏的规律,察觉到变量之 ...

  8. Oracle 数据怎么实时同步到 SQL Server | 亲测干货分享建议收藏

    摘要: 很多 DBA 同学经常会遇到要从一个数据库实时同步到另一个数据库的问题,同构数据还相对容易,遇上异构数据.表多.数据量大等情况就难以同步.我自己亲测了一种方式,可以非常方便地完成 Oracle ...

  9. Python+pandas实现时间序列数据扩展案例一则

    感谢山东科技大学李超老师提供应用背景. 在分析时序数据的有些场合下,可能每个月只能拿到一个数据,然而实际处理时,需要把这个数据扩展到该月的每天,且每天的数据相同. 演示代码: 某次运行结果: ---- ...

最新文章

  1. python零基础入门建模_python基础教程之Python 建模步骤|python基础教程|python入门|python教程...
  2. 数组作为函数参数进行传递
  3. git 拉取分支代码 合分支
  4. XSS 注入漏洞处理
  5. 基础练习 字母图形(找规律)
  6. python常用算法有哪些_python常见的排序算法有哪些?
  7. hadoop eclipse plugin windows下载集合
  8. 曾经辉煌无限,如今员工持续大量流失,集团目前仅剩10余人
  9. php封ip,php实现封IP功能[原创]
  10. SPSS 24安装教程详细步骤
  11. 格式html载入矢量图片,Web前端矢量小图标的使用方法
  12. 八月实施:电动自行车3c认证,电动自行车CCC认证费用周期,办理电动自行车ccc认证机构
  13. 电磁干扰、电磁兼容性和电磁屏蔽区别及联系
  14. 从正则表达式到NFA:Thompson构造法
  15. 十年之痛解读日本房地产泡沫
  16. [补记]小河流水哗啦啦之昨日种种
  17. vue:基础:生命周期
  18. .net后台判断服务器(http/https开头)图片是否存在
  19. 3.29 判断电脑无线网卡是否支持5GHz频段
  20. 最新!2020中国高校毕业生薪资排行出炉!

热门文章

  1. oracle 非GBK字符集编码的汉字排序
  2. 洛谷-数的计算-过程函数与递归
  3. Android网络课程笔记-----Actionbar的实现方式
  4. Android柳叶刀之Button之UI交互
  5. 一个linux 和 Windows下都可用的 scoket
  6. MAC卸载java 12.0.2
  7. 如何深拷贝一个对象数组?
  8. 开发高性能JAVA应用程序基础(内存篇)
  9. Logger日志级别说明及设置方法、说明 (zhuan)
  10. JQuery的$和其它JS发生冲突的快速解决方法