利用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的重采樣不同
#對時期的重采樣要更嚴格

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM