获取最新股票代码列表

在tushare中,任何数据处理的前提都是获取最新的股票代码列表,有两种方式可以获得:

方法一

使用ts.get_today_all()
返回结果如下:

,code,name,changepercent,trade,open,high,low,settlement,volume,turnoverratio,amount,per,pb,mktcap,nmc
0,
603999,读者传媒,-4.711,7.08,7.4,7.43,7.03,7.43,4208328.0,1.82653,30356269.0,54.046,2.4130000000000003,407808.0,163123.2
1,
603998,方盛制药,0.0,9.43,0.0,0.0,0.0,9.43,0.0,0.0,0.0,58.938,4.066,406373.09121,400960.50696
2,

改方法的缺点是获取数据的速度比较慢,实测大约10-15秒左右,根据用户的网络情况而定。

方法二

使用ts.get_stock_basics()
耗时约1-2秒
返回结果如下:

code,name,industry,area,pe,outstanding,totals,totalAssets,liquidAssets,fixedAssets,reserved,reservedPerShare,esp,bvps,pb,timeToMarket,undp,perundp,rev,profit,gpr,npr,holders

603348,N文灿,汽车配件,广东,31.12,0.55,2.2,233744.7,80512.95,108315.56,47590.95,2.16,0.706,6.82,3.22,20180426,46519.78,2.11,27.98,0.39,26.63,9.97,51255.0

300216,千山药机,医疗保健,湖南,56.22,2.61,3.61,449811.91,224934.97,49833.87,22273.2,0.62,0.12300000000000001,3.36,2.74,20110511,55952.16,1.55,61.48,135.27,49.98,6.51,25120.0

结论

1.两种方法对于系统的开销不同,视使用场景和需获取的数据类型决定使用何种方法。
2.两种方法均只能获取传统型的股票代码,比如600、000、300等开头的代码,不支持510、1599开头的ETF基金
3.对于ETF,我一般将经常需要处理的代码汇总成list,直接导入系统查询,列表如下:['512880','510050','510180','510230','510300','510500','510880','510900','159901','159902','159915','159919','159920','159934','159937','159938','159949','159952']

特别提示:一个小坑

在list导入时,python会将代码认定为int类型,所以在查询诸如000555的代码时,会变成ts.get_k_data(555),从而会报错,因此list处理时,需要补0。此处需要使用int型数据补零方法

#int型数据补零方法
i = "%06d" % i
#文本型数据补零方法
i=i.zfill(6)

运行代码

def load_today_all():
    '''
    [加载当日实时数据]######
    从硬盘中获取当日交易的数据,数据由update_today_all提供更新
    【行情不含基金和ETF】
    读取目录在/data/today_all.csv
    '''
    allcode=[]
    #载入代码
    df=pd.read_csv('~/environment/TuShare/data/today_all.csv')
    #筛选代码
    df.set_index(['code'], inplace = True) 
    for i in df.index:
        i = "%06d" % i
        #i=i.zfill(6)
        allcode.append(i)
        print(i)
    return allcode

你可能感兴趣的:(获取最新股票代码列表)