使用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)