使用tushare数据源获取数据后处理
以下都是本人在获得数据后,进行量化回测时,处理数据遇到的各种坑以及解决方案,有些甚至都很幼稚,切勿嘲笑
获取数据
导包
import tushare as ts
import pandas as pd
import matplotlib
#(jupyternotebook 画图用的,别的工具可以不用)
%matplotlib auto
#正常显示画图时出现的中文和负号
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] =False
#显示所有列
pd.set_option('display.max_columns',None)
#显示所有行
pd.set_option('display.max_rows',None)
获取50指数数据
token='token值'
pro = ts.pro_api(token)
df = ts.fund_nav(ts_code='510050.SH')
df.head()
数据处理:
1.ts_code只保留前面代码
df['ts_code']=df['ts_code'].apply(lambda x:x[:6]).tolist()
2.列名修改
#修改列名
df.rename(columns={'ann_date':'trade_date'},inplace=True)
3.删除不需要的列
df = df.drop(['end_date','accum_nav','accum_div','net_asset','total_netasset','adj_nav','update_flag'],axis=1,inplace=True)
4.将数字日期修改为%Y-%m-%d格式
粗略说明,之后会专门讲解,挺麻烦的,将str格式转化为数字,再进行转换
df['trade_date'] = df['trade_date'].astype('datetime64[ns]')
5.按照日期排序
博主曾经遇到一个错误,就是日期排序后,有几个日期不是按照顺序排的,后来解决了,但目前找不到当时的解决方案,以后补充(备注,也欢迎大家补充)
df = df.sort_values(by='trade_date')
df.set_index('trade_date',inplace=True)