首页 > 代码库 > 利用Python进行数据分析——第十章 时间序列(2)

利用Python进行数据分析——第十章 时间序列(2)


# coding: utf-8

 

import pandas as pd
import numpy as np

 

summary=pd.read_table(‘C:/Users/AG_Forcast/TrainData/AGS_shipments_summary/qry_1004366250.txt‘,keep_date_col=True)

 

summary[:10]
pd.to_datetime(summary[‘CN_PKG_TSS_SHIP_DATE‘])
pd.to_datetime(summary[‘NA_PKG_TSS_SHIP_DATE‘]) #一次只能传入一列数
summary[:10]


from pandas import Series,DataFrame
exp1=DataFrame(summary,columns=[‘CN_PKG_TSS_SHIP_DATE‘,‘CN_TRACKING_ID_NUMBER‘])
exp1[:10]
exp1[‘CN_PKG_TSS_SHIP_DATE‘]=exp1[‘CN_PKG_TSS_SHIP_DATE‘].to_timestamp

 

ts_m=exp1.resample(‘M‘,how=‘mean‘) #不能resample。。。为什么???
ts_mn=exp1.resample(‘M‘,how=‘mean‘,kind=‘period‘)

 

rng=pd.date_range(‘2016-09-01‘,periods=12,freq=‘T‘)
ts=Series(np.arange(12),index=rng)
ts

 

ts.resample(‘5min‘,how=‘sum‘) #重抽样->降采样 默认是左闭合
ts.resample(‘5min‘,how=‘sum‘,closed=‘left‘,label=‘left‘) #close 和 label参数
ts.resample(‘5min‘,how=‘sum‘,closed=‘right‘,label=‘left‘)
ts.resample(‘5min‘,how=‘sum‘,closed=‘left‘,label=‘right‘)
ts.resample(‘5min‘,how=‘sum‘,closed=‘right‘,label=‘right‘)

 

ts.resample(‘5min‘,how=‘sum‘,loffset=‘-1s‘) #loffset参数的用法
#减去一秒后就能很清楚的判断它是属于哪个时间段

 

ts.resample(‘5min‘,how=‘ohlc‘) #直接聚合出第一个值、最后一个值、最大值、最小值

 

rng=pd.date_range(‘20160901‘,periods=100,freq=‘D‘)
ts=Series(np.arange(100),index=rng)
ts.groupby(lambda x: x.month).mean() #使用groupby方法对时间进行聚合
ts.groupby(lambda x: x.weekday).mean()

 

frame=DataFrame(np.random.randn(2,4),
index=pd.date_range(‘20160901‘,periods=2,freq=‘W-WED‘),columns=[‘a‘,‘b‘,‘c‘,‘d‘])
frame #从9月的第一个周三开始,取两个周三
frame.resample(‘D‘) #将其重采样,得到每天的数据,允许缺失值 ->升采样
frame.resample(‘D‘,fill_method=‘ffill‘) #按照前一个数,填充缺失值
frame.resample(‘D‘,fill_method=‘bfill‘) #按照后一个数,填充缺失值
frame.resample(‘D‘,fill_method=‘ffill‘,limit=2) #按照前一个数,填充缺失值,限制只填充两行


frame.resample(‘W-THU‘,fill_method=‘ffill‘) #进行重采样的数据不需要被原始数据范围包含

 

frame=DataFrame(np.random.randn(31,4),index=pd.period_range(‘20160901‘,‘20161001‘,freq=‘D‘)
,columns=[‘a‘,‘b‘,‘c‘,‘d‘])
frame

 

annual_frame=frame.resample(‘W-MON‘,how=‘mean‘) #时期索引的降采样
annual_frame #20160905是周一

 

annual_frame=frame.resample(‘M‘,how=‘mean‘) #时期索引的升采样
annual_frame
annual_frame=frame.resample(‘M‘,how=‘mean‘,convention=‘start‘)
annual_frame
annual_frame=frame.resample(‘M‘,how=‘mean‘,convention=‘end‘)
annual_frame #date_range生成的是datetimeindex;period_range生成的是时期,对时期的重采样与对datetime的重采样不同
#对时期的重采样要更严格

 

利用Python进行数据分析——第十章 时间序列(2)