python 返回列表时间索引序列数据的提取处理?

随便放个镇楼图,图片源自unsplash1. Python的日期与时间工具Python基本的日期与时间功能都在标准库的datetime模块中,例如使用datetime类型创建一个日期,返回一个datetime对象:from datetime import datetime#创建日期2019年8月5日dt1 = datetime(2019,8,5)返回当前时刻及其年、月、日、周等:>>>from datetime import datetime>>>datetime.now()#2019年8月5日15时38分1秒datetime.datetime(2019, 8, 5, 15, 38, 1, 345990)>>>datetime.now().year2019>>>datetime.now().month8>>>datetime.now().day14>>>datetime.now().weekday()+1#周一1>>>datetime.now().isocalendar()#2019年第32周的第1天(2019,32,1)>>>datetime.now().isocalendar()[1]#返回周数32设置指定的日期、时间格式:>>>from datetime import datetime>>>datetime.now().date()datetime.date(2019, 8, 5) #只显示日期>>>datetime.now().time()datetime.date(2019, 8, 5) #只显示时间#使用strftime()函数可自定义时间和日期的格式>>>datetime.now().strftime('%Y%m%d')'20190805'时间计算:datetime2 = datetime1 + timedeltadatetime2 = datetime1 - timedeltatimedelta = datetime1 - datetime2datetime1 < datetime2datetime模块在易用性和灵活性方面表现良好,但如果需要处理的时间数据量比较大时,datetime的速度就会比较慢。2. Pandas的日期与时间工具Pandas所有关于日期与时间的处理方法全部都是通过Timestamp对象实现的,通过一组Timestamp对象就可以创建一个作为Series或DateFrame索引的DatetimeIndex。import pandas as pddt2 = pd.to_datetime('21090805')print(dt2)#Timestamp('2109-08-05 00:00:00')print(dt2.date())#datetime.date(2109, 8, 5)在Pandas中,用来处理时间序列的基本数据类型有三种:Timestamp类型,针对处理时间戳数据,对应的索引数据结构是DatetimeIndex,创建规律性时间序列的方法为:pd.date_range()。PeriodIndex类型,针对处理时间周期数据,对应的索引数据结构是PeriodIndex,创建规律性时间序列的方法为:pd.period_range()。Timedelta类型,针对处理时间增量或持续时间,对应的索引数据结构是TimedeltaIndex,创建规律性时间序列的方法为:pd.timedelta_range()。在pd.xxx_range()中,参数period用于设置周期数,freq用于设置时间间隔。用时间作为索引可以用DatetimeIndex()生成时间索引,例:indx = pd.DatetimeIndex(['201908','201909','201910','201911'])df = pd.DataFrame(.......,index=indx)或者使用pd.xxx_range()生成一个有规律的时间序列,例:import pandas as pdimport numpy as npdtindx = pd.date_range('20190805',periods=17,freq='H')dfdt = pd.DataFrame(np.random.randint(10,100,(17,3)),index=dtindx,columns=list('abc'))print(dfdt)# a b c# 2019-08-05 00:00:00 19 35 66# 2019-08-05 01:00:00 94 94 69# 2019-08-05 02:00:00 92 77 83# 2019-08-05 03:00:00 61 50 46# 2019-08-05 04:00:00 48 14 11# 2019-08-05 05:00:00 96 94 53# 2019-08-05 06:00:00 64 56 39# 2019-08-05 07:00:00 60 26 72# 2019-08-05 08:00:00 33 59 84# 2019-08-05 09:00:00 49 51 99# 2019-08-05 10:00:00 90 22 93# 2019-08-05 11:00:00 68 95 27# 2019-08-05 12:00:00 91 17 26# 2019-08-05 13:00:00 79 49 87# 2019-08-05 14:00:00 31 81 18# 2019-08-05 15:00:00 69 88 33# 2019-08-05 16:00:00 83 97 44时间频率与频率转换时间频率指的是时间周期,即periods参数,pandas的频率代码如下:代码描述代码描述D天B天(仅含工作日)W周M月末BM月末(仅含工作日)Q季末BQ季末(仅含工作日)A年末BA年末(仅含工作日)H小时BH小时(工作时间)T分钟S秒L毫秒U微妙N纳秒带开始索引的频率代码:代码频率MS月初BMS月初(仅含工作日)QS季初BQS季初(仅含工作日)AS年初BAS年初(仅含工作日)使用 .asfreq() 进行频率转换。或者使用 resample() 。一般情况下,resample比asfreq更常用,两者主要差异为resample()是以数据累计为基础,而asfreq()是以数据选择为基础。频率转换对缺失值的默认处理为向前取样,也就是在里面填充NaN,填缺参数有两种:bfill,向后取样ffill,向前取样时间迁移时间迁移常用在计算数据在不同时段的差异,Pandas有两种此类方法:shift(),迁移数据;tshift(),迁移索引}

我要回帖

更多关于 python 返回列表 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信