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



所有评论(0)