需求
对于金融数据,我们常常需要改变数据的周期,比如将分钟数据的周期变为日周期的数据。
以下以股票5分钟数据为准,将其转化为15分钟的数据数据。
代码
import numpy as np
import pandas as pd
import tushare as ts
ts.set_token('你的token')
df=ts.get_k_data('399300',ktype='5')
df.head(20)
本接口即将停止更新,请尽快使用Pro版接口:https://tushare.pro/document/2
| date | open | close | high | low | volume | amount | turnoverratio | code |
---|
0 | 2022-09-13 13:45 | 4117.55 | 4114.56 | 4117.94 | 4113.18 | 1475506.0 | {} | 0.5166 | 399300 |
---|
1 | 2022-09-13 13:50 | 4114.76 | 4115.08 | 4115.26 | 4113.65 | 1327791.0 | {} | 0.4649 | 399300 |
---|
2 | 2022-09-13 13:55 | 4114.90 | 4112.24 | 4115.17 | 4112.03 | 1426425.0 | {} | 0.4994 | 399300 |
---|
3 | 2022-09-13 14:00 | 4112.21 | 4114.06 | 4114.51 | 4111.48 | 1484672.0 | {} | 0.5198 | 399300 |
---|
4 | 2022-09-13 14:05 | 4113.89 | 4115.38 | 4117.78 | 4112.52 | 1606878.0 | {} | 0.5626 | 399300 |
---|
5 | 2022-09-13 14:10 | 4115.21 | 4112.84 | 4115.21 | 4112.38 | 1248984.0 | {} | 0.4373 | 399300 |
---|
6 | 2022-09-13 14:15 | 4112.98 | 4115.00 | 4115.02 | 4112.44 | 1366021.0 | {} | 0.4783 | 399300 |
---|
7 | 2022-09-13 14:20 | 4115.05 | 4112.92 | 4115.05 | 4112.67 | 1247732.0 | {} | 0.4369 | 399300 |
---|
8 | 2022-09-13 14:25 | 4113.08 | 4113.66 | 4113.89 | 4112.82 | 1240570.0 | {} | 0.4343 | 399300 |
---|
9 | 2022-09-13 14:30 | 4113.43 | 4111.72 | 4113.68 | 4111.43 | 1648447.0 | {} | 0.5771 | 399300 |
---|
10 | 2022-09-13 14:35 | 4111.72 | 4110.99 | 4112.88 | 4110.07 | 1965279.0 | {} | 0.6881 | 399300 |
---|
11 | 2022-09-13 14:40 | 4110.74 | 4111.07 | 4111.12 | 4109.19 | 1757416.0 | {} | 0.6153 | 399300 |
---|
12 | 2022-09-13 14:45 | 4111.27 | 4110.55 | 4112.61 | 4110.47 | 1792504.0 | {} | 0.6276 | 399300 |
---|
13 | 2022-09-13 14:50 | 4110.43 | 4110.67 | 4111.57 | 4110.30 | 2166563.0 | {} | 0.7585 | 399300 |
---|
14 | 2022-09-13 14:55 | 4110.65 | 4109.18 | 4110.65 | 4108.46 | 2648063.0 | {} | 0.9271 | 399300 |
---|
15 | 2022-09-13 15:00 | 4109.26 | 4111.11 | 4111.11 | 4108.99 | 2289574.0 | {} | 0.8016 | 399300 |
---|
16 | 2022-09-14 09:35 | 4058.04 | 4074.28 | 4076.78 | 4055.13 | 11682915.0 | {} | 4.0904 | 399300 |
---|
17 | 2022-09-14 09:40 | 4073.94 | 4078.50 | 4079.08 | 4069.18 | 5309691.0 | {} | 1.8590 | 399300 |
---|
18 | 2022-09-14 09:45 | 4078.18 | 4071.31 | 4079.59 | 4070.98 | 3616729.0 | {} | 1.2663 | 399300 |
---|
19 | 2022-09-14 09:50 | 4070.47 | 4071.95 | 4074.95 | 4066.75 | 3170348.0 | {} | 1.1100 | 399300 |
---|
df['date']=pd.to_datetime(df['date'])
df=df.set_index('date')
df_new=pd.DataFrame()
df_new['open']=df['open'].resample('15T').first()
df_new['high']=df['high'].resample('15T').max()
df_new['low']=df['low'].resample('15T').min()
df_new['close']=df['close'].resample('15T').last()
df_new['volume']=df['volume'].resample('15T').sum()
df_new.head(20)
| open | high | low | close | volume |
---|
date | | | | | |
---|
2022-09-13 13:45:00 | 4117.55 | 4117.94 | 4112.03 | 4112.24 | 4229722.0 |
---|
2022-09-13 14:00:00 | 4112.21 | 4117.78 | 4111.48 | 4112.84 | 4340534.0 |
---|
2022-09-13 14:15:00 | 4112.98 | 4115.05 | 4112.44 | 4113.66 | 3854323.0 |
---|
2022-09-13 14:30:00 | 4113.43 | 4113.68 | 4109.19 | 4111.07 | 5371142.0 |
---|
2022-09-13 14:45:00 | 4111.27 | 4112.61 | 4108.46 | 4109.18 | 6607130.0 |
---|
2022-09-13 15:00:00 | 4109.26 | 4111.11 | 4108.99 | 4111.11 | 2289574.0 |
---|
2022-09-13 15:15:00 | NaN | NaN | NaN | NaN | 0.0 |
---|
2022-09-13 15:30:00 | NaN | NaN | NaN | NaN | 0.0 |
---|
2022-09-13 15:45:00 | NaN | NaN | NaN | NaN | 0.0 |
---|
2022-09-13 16:00:00 | NaN | NaN | NaN | NaN | 0.0 |
---|
2022-09-13 16:15:00 | NaN | NaN | NaN | NaN | 0.0 |
---|
2022-09-13 16:30:00 | NaN | NaN | NaN | NaN | 0.0 |
---|
2022-09-13 16:45:00 | NaN | NaN | NaN | NaN | 0.0 |
---|
2022-09-13 17:00:00 | NaN | NaN | NaN | NaN | 0.0 |
---|
2022-09-13 17:15:00 | NaN | NaN | NaN | NaN | 0.0 |
---|
2022-09-13 17:30:00 | NaN | NaN | NaN | NaN | 0.0 |
---|
2022-09-13 17:45:00 | NaN | NaN | NaN | NaN | 0.0 |
---|
2022-09-13 18:00:00 | NaN | NaN | NaN | NaN | 0.0 |
---|
2022-09-13 18:15:00 | NaN | NaN | NaN | NaN | 0.0 |
---|
2022-09-13 18:30:00 | NaN | NaN | NaN | NaN | 0.0 |
---|
df_new=df_new.dropna()
df_new.head()
| open | high | low | close | volume |
---|
date | | | | | |
---|
2022-09-13 13:45:00 | 4117.55 | 4117.94 | 4112.03 | 4112.24 | 4229722.0 |
---|
2022-09-13 14:00:00 | 4112.21 | 4117.78 | 4111.48 | 4112.84 | 4340534.0 |
---|
2022-09-13 14:15:00 | 4112.98 | 4115.05 | 4112.44 | 4113.66 | 3854323.0 |
---|
2022-09-13 14:30:00 | 4113.43 | 4113.68 | 4109.19 | 4111.07 | 5371142.0 |
---|
2022-09-13 14:45:00 | 4111.27 | 4112.61 | 4108.46 | 4109.18 | 6607130.0 |
---|