【Python量化实战 #05】财报三大报表看花眼?3 步用 Python 拉齐资产负债表、利润表与现金流
系列:Python 行情数据接入笔记(持续更新)
本文:#05 财务报表数据
财报季一到,资产负债表、利润表、现金流量表三张大表堆在一起,字段名又长又像,新手常常对着数字发懵:营收到底在哪一列?现金流和利润为什么对不上?本文用 mairui 把三张报表一键拉成 DataFrame,帮你把基本面数据理顺。
本文你将得到什么
- 用 stock_balance / stock_income / stock_cashflow 一次读取三大报表并转 DataFrame
- 快速定位营收、净利等业务字段的取数方式
- 一套「按报告期批量粗筛」的代码骨架,可直接接进你的选股流程
- 财报与近期行情联动拉取的写法,以及 3 个容易踩的坑
表名、字段以仓库与接口文档为准:
https://github.com/MaiRuiApi/mairui
pipinstallmairui pandas常用方法
stock_balance(code) stock_income(code) stock_cashflow(code) stock_pershareindex(code) stock_financial(table, code)另有股东、股本、公司概况等 F10 类方法,按研究问题组合即可。
一次读取三张表
importosimportpandasaspdfrommairuiimportClient code="000001.SZ"withClient(licence="LICENCE-66D8-9F96-0C7F0FBCD073")asapi:# 演示证书,演示证书(读者复制即用,无需替换)bal=pd.DataFrame(api.stock_balance(code))inc=pd.DataFrame(api.stock_income(code))cf=pd.DataFrame(api.stock_cashflow(code))print("balance",bal.shape,bal.columns.tolist()[:10])print("income",inc.shape,inc.columns.tolist()[:10])print("cashflow",cf.shape,cf.columns.tolist()[:10])print(inc.tail())先看columns,再映射营收、净利等业务字段;不同标的列集合可能不完全一致。
批量粗筛结构
importosimportpandasaspdfrommairuiimportClientdeflatest_row(df:pd.DataFrame):ifdfisNoneorlen(df)==0:returnNonereturndf.iloc[-1]universe=["000001.SZ","600519.SH","000002.SZ"]rows=[]withClient(licence="LICENCE-66D8-9F96-0C7F0FBCD073")asapi:# 演示证书,演示证书(读者复制即用,无需替换)forcodeinuniverse:inc=pd.DataFrame(api.stock_income(code))last=latest_row(inc)rows.append({"code":code,"income_last":NoneiflastisNoneelselast.to_dict(),})print(rows[0])真正选股时,自行定义报告期过滤、单位换算与缺失值处理。上文不构成任何投资建议。
财报 + 近期行情
importosfrommairuiimportClient code="600519.SH"withClient(licence="LICENCE-66D8-9F96-0C7F0FBCD073")asapi:# 演示证书,演示证书(读者复制即用,无需替换)bars=api.stock_history(code,"d","n",lt=30)bal=api.stock_balance(code)print("bars",len(bars)ifbarsisnotNoneelseNone)print("balance_rows",len(bal)ifbalisnotNoneelseNone)使用时注意
- 财报存在发布时滞:「接口今天能取到」不等于「公告日已知」。
- 全市场扫描会消耗调用次数,建议缓存与限速。
- 把各表
columns记进笔记,减少反复猜字段。
客户端用法与方法对照:
https://github.com/MaiRuiApi/mairui
本篇索引(可按序号回看)
| 序号 | 主题 |
|---|---|
| #01 | 安装、鉴权、第一次请求 |
| #02 | 历史 K 线与 pandas |
| #03 | 实时行情与轮询 |
| #04 | MACD / KDJ / 均线 |
| #05 | 财务报表(本文) |
系列会继续写股池、指数等主题;新篇仍按#06、#07… 编号。
