Pandas時間序列
阿新 • • 發佈:2020-08-15
1. 生成一段時間範圍:
pd.date_range(Start=None, End=None, periods=None, freq='D'
start, end, 和 freq配合能夠生成Start和End範圍內以頻率freq的一組時間索引
start, periods和 freq配合能夠生產從start開始的頻率為freq的periods個時間索引
返回型別:pandas.core.indexes.datetimes.DatetimeIndex
1 import pandas as pd 2 datetime=pd.date_range(start='2020-1-1',end='2020-8-15',freq='10D') 3 print(datetime)
結果:
DatetimeIndex(['2020-01-01', '2020-01-11', '2020-01-21', '2020-01-31', '2020-02-10', '2020-02-20', '2020-03-01', '2020-03-11', '2020-03-21', '2020-03-31', '2020-04-10', '2020-04-20', '2020-04-30', '2020-05-10', '2020-05-20', '2020-05-30', '2020-06-09', '2020-06-19', '2020-06-29', '2020-07-09', '2020-07-19', '2020-07-29', '2020-08-08'], dtype='datetime64[ns]', freq='10D')
BM - 每個月最後一個工作日
1 import pandas as pd 2 datetime=pd.date_range(start='2020-1-1',end='2020-8-15',freq='BM') 3 print(datetime)
結果:
DatetimeIndex(['2020-01-31', '2020-02-28', '2020-03-31', '2020-04-30', '2020-05-29', '2020-06-30', '2020-07-31'], dtype='datetime64[ns]', freq='BM')
BMS - 每月第一個工作日
1 import pandas as pd 2 datetime=pd.date_range(start='2020-1-1',end='2020-8-15',freq='BMS') 3 print(datetime)
結果:
DatetimeIndex(['2020-01-01', '2020-02-03', '2020-03-02', '2020-04-01', '2020-05-01', '2020-06-01', '2020-07-01', '2020-08-03'], dtype='datetime64[ns]', freq='BMS')
使用periods=
1 import pandas as pd 2 datetime=pd.date_range(start='2020-1-1',periods=10,freq='BM') 3 print(datetime)
結果:
DatetimeIndex(['2020-01-31', '2020-02-28', '2020-03-31', '2020-04-30', '2020-05-29', '2020-06-30', '2020-07-31', '2020-08-31', '2020-09-30', '2020-10-30'], dtype='datetime64[ns]', freq='BM')
D Day 每日日曆 B BusinessDay 每工作日 H Hour 每小時 T or min Minutes 每分鐘 S Second 每秒 L or ms Milli 每毫秒 U Micro 每微秒 M MonthEnd 每月最後一個日曆日 BM BusinessMonthEnd 每月最後一個工作日 MS MonthBegin 每月第一個日曆日 BMS BusinessMonthBegin 每月第一個工作日
2. 使用時間週期產生時間序列
1 import pandas as pd 2 import numpy as np 3 datetime=pd.date_range(start='2020-1-1',periods=10,freq='BM') 4 dfs=pd.DataFrame(np.random.rand(10),index=datetime)
5 dfs.columns=['rand']
6 print(dfs)
結果:
rand
2020-01-31 0.063098
2020-02-28 0.507646
2020-03-31 0.201181
2020-04-30 0.937127
2020-05-29 0.868136
2020-06-30 0.418600
2020-07-31 0.404452
2020-08-31 0.154341
2020-09-30 0.107054
2020-10-30 0.327396
3. 將DataFrame中的時間字串轉換成時間戳(timeStamp)
dfs['sdate']=pd.to_datetime(dfs['sdate'],format='') sdate scode topen thigh tlow tclose 0 2020-06-23 600000 10.51 10.57 10.47 10.48 1 2020-06-22 600000 10.57 10.66 10.53 10.55 2 2020-06-19 600000 10.56 10.68 10.50 10.61 3 2020-06-18 600000 10.42 10.57 10.39 10.50 4 2020-06-17 600000 10.44 10.51 10.43 10.47