如何用baostock库查询某只股票的财务状况能力?

接我上一篇文章,我是一名审计师,不是程序员,如果我想获得某类股票的基本信息,但又不记得这些股票的代码,那么如何进行模糊查询呢?
这里要用到Baostock库:

代码如下:

##获取某类股票的信息

import pandas as pd

import baostock as bs

# 登陆系统

lg = bs.login()

# 显示登陆返回信息

print('login respond error_code:' + lg.error_code)

print('login respond error_msg:' + lg.error_msg)

rs = bs.query_stock_basic(code_name="银行") # 支持模糊查询

data_list = []

while (rs.error_code == '0') & rs.next():

# 获取一条记录,将记录合并在一起

 data_list.append(rs.get_row_data())

result = pd.DataFrame(data_list, columns=rs.fields)

bs.logout()

print(result)

运行结果如下:

login success!

login respond error_code:0

login respond error_msg:success

logout success!

  code   code_name  ipoDate    outDate type status

0 sh.000134 上证银行股指数 2012-05-29 2 1

1 sh.000849 沪深300非银行金融指数 2012-12-21 2 1

2 sh.000951 沪深300银行指数 2009-10-28 2 1

3 sh.600000 浦发银行 1999-11-10 1 1

4 sh.600015 华夏银行 2003-09-12 1 1

5 sh.600016 民生银行 2000-12-19 1 1

6 sh.600036 招商银行 2002-04-09 1 1

7 sh.600908 无锡银行 2016-09-23 1 1

8 sh.600919 江苏银行 2016-08-02         1 1

9 sh.600926 杭州银行 2016-10-27 1 1

10 sh.600928 西安银行 2019-03-01 1 1

11 sh.601009 南京银行 2007-07-19 1 1

12 sh.601128 常熟银行 2016-09-30 1 1

13 sh.601166 兴业银行 2007-02-05 1 1

14 sh.601169 北京银行 2007-09-19 1 1

15 sh.601187 厦门银行 2020-10-27 1 1

16 sh.601229 上海银行 2016-11-16 1 1

17 sh.601288 农业银行 2010-07-15 1 1

18 sh.601328 交通银行 2007-05-15 1 1

19 sh.601398 工商银行 2006-10-27 1 1

20 sh.601528 瑞丰银行 2021-06-25 1 1

21 sh.601577 长沙银行 2018-09-26 1 1

22 sh.601658 邮储银行 2019-12-10 1 1

23 sh.601665 齐鲁银行 2021-06-18 1 1

24 sh.601818 光大银行 2010-08-18 1 1

25 sh.601838  成都银行 2018-01-31 1 1

26 sh.601860 紫金银行 2019-01-03 1 1

27 sh.601916 浙商银行 2019-11-26 1 1

28 sh.601939 建设银行 2007-09-25 1 1

29 sh.601963 重庆银行 2021-02-05 1 1

30 sh.601988 中国银行 2006-07-05 1 1

31 sh.601997 贵阳银行 2016-08-16 1 1

32 sh.601998 中信银行 2007-04-27 1 1

33 sh.603323 苏农银行 2016-11-29    1 1

34 sz.000001 平安银行 1991-04-03 1 1

35 sz.002142 宁波银行 2007-07-19 1 1

36 sz.002807 江阴银行 2016-09-02 1 1

37 sz.002936 郑州银行 2018-09-19 1 1

38 sz.002948 青岛银行 2019-01-16 1 1

39 sz.002966 苏州银行 2019-08-02 1 1

如果我不想查“银行”,而是想查“茅台”呢?一样可以的,只要将rs = bs.query_stock_basic(code_name=”银行”)改成(code_name=”茅台”)就可以了。

运行结果如下:

login success!

login respond error_code:0

login respond error_msg:success

logout success!

  code       code_name ipoDate outDate type status

0 sh.600519 贵州茅台 2001-08-27 1 1

这样的操作比较简单,但如果我要做一个贵州茅台的财务分析,再一个一个指标去查的话,将会比较麻烦。一般来说,我会将需要查询的指标放到一个py程序中,固定格式,有需要的时候直接查询,为了方便初学者理解,代码不用for in 循环结构,详细如下:

##**查询某只股票的财务状况能力*
import baostock as bs
import pandas as pd

# 登陆系统
lg = bs.login()
# 显示登陆返回信息
print('login respond error_code:'+lg.error_code)
print('login respond  error_msg:'+lg.error_msg)
stocknum = input("请输入股票代码,例如茅台为:sh.600519,平安银行为sz.000001等:")

# 查询季频估值指标盈利能力
profit_list = []
rs1= bs.query_profit_data(code=stocknum, year=2020, quarter=1)##获取2020年第一季盈利能力
rs2= bs.query_profit_data(code=stocknum, year=2020, quarter=2)##获取2020年第二季盈利能力
rs3= bs.query_profit_data(code=stocknum, year=2020, quarter=3)##获取2020年第三季盈利能力
rs4= bs.query_profit_data(code=stocknum, year=2020, quarter=4)
rs5= bs.query_profit_data(code=stocknum, year=2021, quarter=1)

while (rs1.error_code == '0') & rs1.next():
    profit_list.append(rs1.get_row_data())
    profit_list.append(rs2.get_row_data())
    profit_list.append(rs3.get_row_data())
    profit_list.append(rs4.get_row_data())
    profit_list.append(rs5.get_row_data())
resp = pd.DataFrame(profit_list,columns=rs1.fields)##导入Pandas
resp.rename(columns={'code':'证券号'},inplace=True) #将表头的名称改成统一的名称
resp.rename(columns={'pubDate':'财报日期'},inplace=True) #将表头的名称改成统一的名称
resp.rename(columns={'statDate':'财报统计截止日'},inplace=True) #将表头的名称改成统一的名称
resp.rename(columns={'roeAvg':'净资产收益率(平均)'},inplace=True) #将表头的名称改成统一的名称
resp.rename(columns={'npMargin':'销售净利率'},inplace=True) #将表头的名称改成统一的名称
resp.rename(columns={'gpMargin':'销售毛利率'},inplace=True) #将表头的名称改成统一的名称
resp.rename(columns={'netProfit':'净利润(元)'},inplace=True) #将表头的名称改成统一的名称
resp.rename(columns={'MBRevenue':'主营营业收入(元)'},inplace=True) #将表头的名称改成统一的名称
resp.rename(columns={'totalShare':'总股本'},inplace=True) #将表头的名称改成统一的名称
resp.rename(columns={'liqaShare':'流通股本'},inplace=True) #将表头的名称改成统一的名称
resp.rename(columns={'epsTTM':'每股收益'},inplace=True) #将表头的名称改成统一的名称
#获取公司业绩快报 #
result_list = []
rs6 = bs.query_dupont_data(code=stocknum, year=2020, quarter=1)
rs7 = bs.query_dupont_data(code=stocknum, year=2020, quarter=2)
rs8 = bs.query_dupont_data(code=stocknum, year=2020, quarter=3)
rs9 = bs.query_dupont_data(code=stocknum, year=2020, quarter=4)
rs10 = bs.query_dupont_data(code=stocknum, year=2021, quarter=1)

while (rs6.error_code == '0') & rs6.next():
    result_list.append(rs6.get_row_data())
    result_list.append(rs7.get_row_data())
    result_list.append(rs8.get_row_data())
    result_list.append(rs9.get_row_data())
    result_list.append(rs10.get_row_data())
    # 获取一条记录,将记录合并在一起
resp2 = pd.DataFrame(result_list, columns=rs6.fields)
resp2.rename(columns={'code':'证券号'},inplace=True) #将表头的名称改成统一的名称
resp2.rename(columns={'pubDate':'财报日期'},inplace=True) #将表头的名称改成统一的名称
resp2.rename(columns={'statDate':'财报统计截止日'},inplace=True) #将表头的名称改成统一的名称
resp2.rename(columns={'dupontROE':'净资产收益率'},inplace=True) #将表头的名称改成统一的名称
resp2.rename(columns={'dupontAssetStoEquity':'权益乘数'},inplace=True) #将表头的名称改成统一的名称
resp2.rename(columns={'dupontAssetTurn':'总资产周转率'},inplace=True) #将表头的名称改成统一的名称
resp2.rename(columns={'dupontPnitoni':'归属母公司股东的净利润'},inplace=True) #将表头的名称改成统一的名称
resp2.rename(columns={'dupontNitogr':'净利润率'},inplace=True) #将表头的名称改成统一的名称
resp2.rename(columns={'dupontTaxBurden':'税负水平(净利润/利润总额)'},inplace=True) #将表头的名称改成统一的名称
resp2.rename(columns={'dupontIntburden':'利息负担(利润总额/息税前利润)'},inplace=True) #将表头的名称改成统一的名称
resp2.rename(columns={'dupontEbittogr':'经营利润率'},inplace=True) #将表头的名称改成统一的名称

respall=pd.merge(resp,resp2)
# 打印输出
print(respall)
# 结果集输出到csv文件
#result_profit.to_csv("D:\\profit_data.csv", encoding="gbk", index=False)
# 登出系统
bs.logout()

当这个程序运行的时候,会弹出:

如何用baostock库查询某只股票的财务状况能力?

这个时候输入要查询的股票代码,如我想查询茅台,输入sh.600519
如何用baostock库查询某只股票的财务状况能力?
结果如下:

如我想查询五粮液,输入:sz.000858

结果如下:

如何用baostock库查询某只股票的财务状况能力?

又或者,查询两者后将结果保在EXCEL文件中。

代码说明:

baostock库只提供了数据,如果将这些数据转化成财务需要的格式是pandas库的事,从基本上说,涉及统计和数据分析的库中,Pandas是必须要掌握的数据结构,它能提供快速、灵活的数据整理方法,又可以结合其他不同功能的库进行使用,应用生态丰富,所以很多搞大数据分析的人都会用到Pandas这个工具,就像修车的一定会用扳手一样。而作为财务人员,我的建议是掌握几个基本的套路,因为一般的财务工作大多带有重复性,只要重复的套路用多了,迟早会熟能生巧。

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!