python时序数据处理2--提取年月信息、时间作差等

python时序数据处理2--提取年月信息、时间作差等,第1张

概述同样首先先生成时序数据1.生成时序数据importpandasaspdimportnumpyasnpfromdatetimeimportdatetime,timedeltatest=pd.date_range('2020-05-09',periods=50,freq='H')#生成时间序列,期数是12,时间间隔按照分钟test[1:10]#构造时间序

同样首先先生成时序数据

1.生成时序数据
import pandas as pdimport numpy as npfrom datetime import datetime,timedeltatest=pd.date_range('2020-05-09',                  periods=50,freq='H')  #生成时间序列,期数是12,时间间隔按照分钟test[1:10]

#构造时间序列数据ts=pd.SerIEs(np.arange(50),index=test)ts_df=pd.DataFrame(ts,columns=['数据'])ts_df=ts_df.reset_index().rename({'index':'Time','数据':'number'},axis=1)ts_df.head()

2. 提取年月日等信息

分析时间周期或者时序特征建模的时候有用

'''分析时间周期常用'''#年ts_df['year']=ts_df['Time'].dt.year#月ts_df['month']=ts_df['Time'].dt.month#日ts_df['day']=ts_df['Time'].dt.day#周内第几日ts_df['dayofweek']=ts_df['Time'].dt.dayofweek  #小时ts_df['Hour']=ts_df['Time'].dt.hour#分钟ts_df['minute']=ts_df['Time'].dt.minute#秒ts_df['second']=ts_df['Time'].dt.secondprint(ts_df.shape)ts_df.head(3)

3.时间作差直接相减
ts_df.iloc[49,0]-ts_df.iloc[0,0]

timedelta(‘2 days 01:00:00’)

使用timedelta
print('原',ts_df.iloc[49,0])print('后推10天',ts_df.iloc[49,0]+timedelta(10)) print('前推10天',ts_df.iloc[49,0]+timedelta(-10))print('前推10天',ts_df.iloc[49,0]-timedelta(10))


timedelta函数:

timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)

其他 *** 作:

#默认按天daysprint('原',ts_df.iloc[49,0])print('向前推1天',ts_df.iloc[49,0]+timedelta(days=-1))    print('向前推10分钟',ts_df.iloc[49,0]+timedelta(minutes=-10))  print('向前推10小时',ts_df.iloc[49,0]+timedelta(hours=-10))    print('向前推1周',ts_df.iloc[49,0]+timedelta(weeks=-1))    

4.时间采样

resample函数:

参数:resample(freq, how=None, axis=0, fill_method=None, closed=None,       label=None,convention='start',kind=None,       loffset=None,limit=None,base=0)参数解释:- rule:一般填写采样频率,如'M'、‘5min',Second(15)- how:用于产生聚合值的函数名或数组函数,例如'mean'、'ohlc'、'np.max'等,默认是'mean',其他常用的值由:'first'、'last'、'median'、'max'、'min'- axis:默认0,默认是纵轴,横轴设置axis=1- fill_method:升采样时如何插值,比如'ffill'、'bfill'等- closed:在降采样时,各时间段的哪一段是闭合的,'right'或'left',默认'right'- label:在降采样时,如何设置聚合值的标签,例如,9:30-9:35会被标记成9:30还是9:35,默认9:30- loffset:面元标签的时间校正值,比如‘-1s'或Second(-1)用于将聚合标签调早1秒- limit:在向前或向后填充时,允许填充的最大时期数- kind:聚合到时期('period')或时间戳('timestamp'),默认聚合到时间序列的索引类型- convention:当重采样时期时,将低频率转换到高频率所采用的约定(start或end)。默认'end'

应用:

ts_t=ts_df.set_index('Time')ts_temp=pd.DataFrame(ts_t['number'])ts_temp.head(10)


每三个小时采样:

ts_temp.resample('3H').sum()

此时第一个区间为2020-05-09 00:00:00~ 2020-05-09 02:00:00所以sum=3(3个时间数据的聚合!)第二个区间为2020-05-09 03:00:00~ 2020-05-09 05:00:00所以sum=12...默认使用左标签(label='left'),左闭合(closed='left')

现在再添加一个类别列,达到对每一个类别进行时间采样的目的:

ts_temp['type']=np.repeat(['A','B','C','D','E'],10)ts_temp

#先按照type分组,再按照时间采样ts_temp.groupby('type').resample('3H').sum()#.reset_index()

总结

以上是内存溢出为你收集整理的python时序数据处理2--提取年月信息、时间作差等全部内容,希望文章能够帮你解决python时序数据处理2--提取年月信息、时间作差等所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1184626.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存