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