1. 程式人生 > 實用技巧 >Pandas時間序列

Pandas時間序列

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