tushare股票数据分析中遇到的问题

基于tushare数据对沪深300成分股进行聚类分析,参考https://scikit-learn.org/stable/auto_examples/applications/plot_stock_market.html

在处理过程中遇到的问题记录一下:

1.不同函数获得数据索引的datetime格式不同

import tushare as ts
HS300=ts.get_h_data(code='000300',start='2018-01-01',end='2019-05-28',index=True)
PFbank=ts.get_hist_data(code='600000',start='2018-01-01',end='2019-5-27')

type(HS300.index)和type(PFbank.index)的结果是不一样的,所以如果直接pd.concat会报错。

建议使用pd.to_datetime()将两个索引变为同样的格式。


2.个股交易信息在停牌日是略过的,有的个股会有非交易日的错误信息

某只股票在2019年5月30日停牌,用ts.get_hist_data就不会有5月30日的索引。所以在相同时间区间内,返回的数据的长度是不一致的,这个要注意。对沪深300成分股下载同一年度的数据,就会出现有的股票少了几十行的数据,不利于后面数据处理。

tushare提供的API不能对缺失的交易日信息进行自动填充,这就需要我们自己动手。我的方法比较土,第一步用沪深300的指数交易日为基准,补齐个股的索引datetime,然后删除个股的非交易日信息;第二步,将填充后会出现的NaN空值,先用前一交易日数据填充,再用后一交易日数据填充,这样确保这个时间区间里,所有空值都有数据填充。


#沪深300指数信息简化,保留一个最简单的临时列。
HS300['temporary']=1
tradeday=HS300['temporary']

#删除与指数不一致的datetime索引
for each in PFbank.index:
    if each not in tradeday.index:
        PFbank=PFbank.drop(index=each)
#合并两个dataframe
 PFbank=pd.concat([tradeday,PFbank],axis=1)
#先用前一交易日数据对后面的NaN数据填充,再用后一交易日对前面的NaN数据填充
 PFbank=PFbank.fillna(method='ffill')
 PFbank=PFbank.fillna(method='bfill') 
#检验填充后是否存在空值
print(PFbank.isnull.sum())

 

你可能感兴趣的:(量化交易)