项目背景#
做财务分析,最头疼的就是数据源头。
以前我是手动导 SAP 报表、复制粘贴到 Excel 里做透视表,每次更新数据要花半天时间,还容易出错。后来用 PowerBI 做看板,但数据源还是手动维护的 CSV 文件——每季度更新一次,依然麻烦。
这个项目的目标:用 Python 自动抓取 A 股财务数据 → 自动清洗 → PowerBI 读取 → 生成可视化报告。 数据源完全自动化,我只用打开 PowerBI 点一下刷新。
技术栈#
| 环节 |
工具 |
| 数据采集 |
Python AkShare(东方财富网开放接口) |
| 数据清洗 |
Python Pandas |
| 数据建模 |
PowerBI + PowerQuery + DAX |
| 可视化 |
PowerBI 仪表盘 |
第一步:用 AkShare 自动抓数据#
AkShare 是一个 Python 开源库,封装了东方财富、新浪财经等平台的公开数据接口。不需要爬虫、不需要 API Key,pip 安装就能用。
抓取财务三大报表#
以华帝股份(002035)为例,抓取利润表、资产负债表、现金流量表:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
import akshare as ak
import pandas as pd
# 利润表
income = ak.stock_financial_report_sina(stock="sz002035", symbol="利润表")
income.to_csv("利润表.csv", encoding="utf-8-sig")
# 资产负债表
balance = ak.stock_financial_report_sina(stock="sz002035", symbol="资产负债表")
balance.to_csv("资产负债表.csv", encoding="utf-8-sig")
# 现金流量表
cashflow = ak.stock_financial_report_sina(stock="sz002035", symbol="现金流量表")
cashflow.to_csv("现金流量表.csv", encoding="utf-8-sig")
|
一条命令就能拿到完整的财务数据。利润表 147 列、资产负债表 241 列、现金流量表 211 列——比你在东方财富网上手动翻页快得多。
抓取股票行情#
1
2
3
4
|
# 实时行情
realtime = ak.stock_zh_a_spot_em()
huadi = realtime[realtime["代码"] == "002035"]
print(huadi[["代码", "名称", "最新价", "涨跌幅", "总市值"]])
|
AkShare 还支持指数数据、行业板块、龙虎榜、基金净值等等,基本上东方财富网上能看的公开数据,都能用代码拿到。
第二步:自动清洗数据#
原始数据有中文字段名,还夹杂着一些无效列。写一个清洗脚本:
1
2
3
4
5
6
7
8
9
10
|
df = pd.read_csv("利润表.csv", encoding="utf-8-sig")
# 只保留有数值的列
numeric_cols = [c for c in df.columns if df[c].dtype in ["float64", "int64"]]
text_cols = ["报告期", "公司代码", "公司简称"]
df_clean = df[text_cols + numeric_cols]
# 单位统一为"元"(原始数据可能是"万元")
# 同比列自动加"同比(%)"后缀
df_clean.columns = [c + "同比(%)" if "同比" in c else c for c in df_clean.columns]
|
清洗后的数据直接输出为规范的 CSV,PowerBI 读取后就能用。
第三步:PowerBI 建模#
把清洗好的 CSV 导入 PowerBI,在 PowerQuery 里做最后的整理:
- 建立日期维度表,和财务数据做关联
- 建关系:
日期表[日期] → 利润表[报告期]
- DAX 写度量值:
1
2
3
4
5
6
|
毛利率 = DIVIDE([营业收入]-[营业成本], [营业收入])
净利率 = DIVIDE([净利润], [营业收入])
收入增长率 =
VAR 本期 = [营业收入]
VAR 上年同期 = CALCULATE([营业收入], SAMEPERIODLASTYEAR(日期表[日期]))
RETURN DIVIDE(本期 - 上年同期, 上年同期)
|
第四步:可视化看板#
最终产出一个完整的 PowerBI 报告,包含:
- 收入分析页:收入趋势图、同比环比、产品线拆解
- 费用月报:管理费用/销售费用/财务费用的结构和趋势
- 产品盈利分析:毛利矩阵、各产品线盈利能力对比
- 现金流量监控:经营活动现金流趋势
核心心得#
整个项目最大的价值不是"做出了一个好看的报表",而是打通了数据链路——从源数据到可视化报告,中间没有任何手工操作。
以前每次做季报分析要花 2-3 天,现在点一下刷新,20 分钟出结果。
📊 在线演示#
👉 查看 PowerBI 财务分析看板
这是一个已发布到 PowerBI Service 的财务分析看板,可直接在浏览器中交互查看。
如果你也在做财务数字化,或者想做类似的自动化报表,欢迎交流:1649219364@qq.com