如何从tushare批量获取交易、财务数据

本文分享了如何使用Python从tushare批量获取交易、财务数据,包括收盘价、涨跌幅等,涉及接口pro.fina_indicator、pro.balancesheet、ts.pro_bar。代码中采用递归调用来应对网络中断,以及处理数据重复问题,以提高批量下载效率。
摘要由CSDN通过智能技术生成

        又要完成tushare的季度任务了。这里分享一下笔者从tushare批量获取交易、财务数据的代码。一共获取了如下数据:收盘价、涨跌幅、成交量、基本每股收益、总资产周转率、每股净资产、净资产收益率、资产负债率、流动资产/总资产、产权比率、资产总计、总股本。分别涉及接口:pro.fina_indicator,pro.balancesheet,ts.pro_bar。代码如下:

        首先进行相关的设置:

import pandas as pd
import numpy as np
import tushare as ts
import time

#设置登录token
ts.set_token('自己的token')
pro = ts.pro_api()
#所有股票的代码
code = pro.stock_basic()

        下面三个函数是获取某个个股某一段时间的数据。注意有个递归调用,目的是为了让程序不受到断网的影响(非常重要,要不然每次都是批量调用还没完就断了还没保存就完蛋)。其中codelist,start_t,end_t分别是股票代码,开始日期和结束日期。

def get_fina_indicator(codelist,start_t,end_t):
    try:
        data=pro.fina_indicator(ts_code=codelist,start_date=start_t,end_date=end_t)
    except:
        data=get_fina_indicator(codelist,start_t,end_t)
    return data

def get_balancesheet(codelist,start_t,end_t):
    try:
        data=pro.balancesheet(ts_code=codelist,start_date=start_t,end_date=end_t)
    except:
        data=get_balancesheet(codelist,start_t,end_t)
    return data

def get_bar(codelist,start_t,end_t):
    try:
        data=ts.pro_bar(ts_code=codelist,start_date=start_t,end_date=end_t)
    except:
        data=get_bar(codelist,start_t,end_t)
    return data

         接下来三个函数是分别批量调用上面三个函数。不过注意tushare数据经常有重复(不知道为什么),需要手动按照日期来删除。其中前两个参数starting_year,ending_year分别代表开始年份和结束年份,后面两个参数不是让用户调用的(当然这几个程序本身也不是让用户调用的),是最后面一个程序内调用的。为了简单起见直接写成从开始年份的一月开始到结束年份的年底的期限。

def getting_ratio(starting_year,ending_year,start_obs,end_obs):
    start=str(starting_year)+'0101'
    if ending_year!=None:
        end=str(ending_year)+'1231'
    else:
        end=None
    a=get_fina_indicator(code['ts_code'][start_obs],start,end)
    eps_test0 = a[['end_date','eps']]
    eps_test0.columns=['date',code['ts_code'][start_obs]]
    assets_turn_test0=a[['end_date','assets_turn']]
    assets_turn_test0.columns=['date',code['ts_code'][start_obs]]
    bps_test0=a[['end_date','bps']]
    bps_test0.columns=['date',code['ts_code'][start_obs]]
    roe_test0=a[['end_date','roe']]
    roe_test0.columns=['date',code['ts_code'][start_obs]]
    debt_to_assets_test0=a[['end_date','debt_to_assets']]
    debt_to_assets_test0.columns=['date',code['ts_code'][start_obs]]
    ca_to_assets_test0=a[['end_date',
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值