当前位置: 首页 > news >正文

使用AkShare获取股票报表

文章目录

  • 使用AkShare获取股票报表
    • 业绩报表
    • 调用代码
    • 多年份数据整合
    • 总结

使用AkShare获取股票报表

akshare可以通过东方财富的接口获得股票报表列表:

业绩报表

  • 接口: stock_yjbb_em

  • 目标地址: http://data.eastmoney.com/bbsj/202003/yjbb.html

  • 描述: 东方财富-数据中心-年报季报-业绩报表

  • 限量: 单次获取指定 date 的业绩报告数据

  • 输入参数

名称类型描述
datestrdate=“20200331”; 可选 {“XXXX0331”, “XXXX0630”, “XXXX0930”, “XXXX1231”}; 从 20100331 开始
  • 输出参数
名称类型描述
序号int64-
股票代码object-
股票简称object-
每股收益float64注意单位: 元
营业总收入-营业总收入float64注意单位: 元
营业总收入-同比增长float64注意单位: %
营业总收入-季度环比增长float64注意单位: %
净利润-净利润float64注意单位: 元
净利润-同比增长float64注意单位: %
净利润-季度环比增长float64注意单位: %
每股净资产float64注意单位: 元
净资产收益率float64注意单位: %
每股经营现金流量float64注意单位: 元
销售毛利率float64注意单位: %
所处行业object-
最新公告日期object-

调用代码

以下为调用代码示例:

import akshare as ak
import datetime
curr_year = datetime.datetime.now().year
# 构造年报日期
report_date = f"{curr_year-1}1231"
stock_yjbb_em_df = ak.stock_yjbb_em(date=report_date)
print(stock_yjbb_em_df)
  0%|          | 0/24 [00:00<?, ?it/s]序号    股票代码  股票简称    每股收益   营业总收入-营业总收入  营业总收入-同比增长  营业总收入-季度环比增长  \
0          1  874774  里得科技  1.0300  3.966731e+08   14.658311           NaN   
1          2  874772  腾信精密  3.1400  7.142117e+08    0.460457           NaN   
2          3  874718  百诺医药  2.0000  5.784967e+08   19.838951           NaN   
3          4  874709  华大海天  1.1500  5.369850e+08    6.423674           NaN   
4          5  874545  永盛高纤  0.0500  2.831473e+08  -25.466174           NaN   
...      ...     ...   ...     ...           ...         ...           ...   
11542  11543  874085  锦华新材  2.1525  1.239482e+09   11.213219      -17.0253   
11543  11544  871326  武侯高新  0.2200  3.183500e+08    2.735192           NaN   
11544  11545  300803   指南针  0.2500  1.528742e+09   37.370000      225.1024   
11545  11546  300708  聚灿光电  0.3000  2.759555e+09   11.230908        7.0525   
11546  11547  838284  时代华商  0.3900  5.818418e+07  -46.821828           NaN   净利润-净利润   净利润-同比增长  净利润-季度环比增长      每股净资产  净资产收益率   每股经营现金流量  \
0      6.568990e+07  16.980000         NaN  10.158670   10.71   2.043845   
1      1.886075e+08   9.239468         NaN  13.484646   26.45   4.127774   
2      1.590960e+08  18.180609         NaN   6.236543     NaN   1.570766   
3      6.346681e+07 -25.628923         NaN   8.903370   13.86   0.617886   
4      8.162482e+06 -74.384303         NaN   1.586115     NaN   0.135808   
...             ...        ...         ...        ...     ...        ...   
11542  2.109411e+08  22.280000     38.5995   8.598603   28.19   0.903287   
11543  6.542755e+07  -2.660000         NaN  11.287002    1.99   0.417517   
11544  1.041971e+08  43.500000    451.0767   5.442976    5.27  10.853801   
11545  1.955931e+08  61.440000    -22.5131   4.017735    7.28   0.775635   
11546  1.293323e+07   3.020000         NaN   1.958399   20.53  -0.198299   销售毛利率   所处行业      最新公告日期  
0      41.522826   None  2025-06-25  
1      43.191094   None  2025-06-25  
2      75.561990   None  2025-06-25  
3      23.155068   None  2025-06-25  
4      15.088624   None  2025-06-25  
...          ...    ...         ...  
11542  27.937141   None  2025-02-10  
11543  50.375456   None  2025-01-27  
11544  85.688932   软件开发  2025-01-25  
11545  13.695617  光学光电子  2025-01-25  
11546  56.468237   None  2025-01-24  [11547 rows x 16 columns]
# 保存数据
stock_yjbb_em_df.to_excel("stock_yjbb_em.xlsx", index=False)

多年份数据整合

通过获取多个年份的数据,与个股基本信息融合,可以得到股票多年的业绩情况。

# 读取Excel文件
import pandas as pd# 读取个股基本信息表,股票代码为字符串类型
basic_info_df = pd.read_excel("个股基本信息表.xlsx", dtype={"股票代码": str})curr_year = datetime.datetime.now().yearbasic_report_df = basic_info_df.copy()
# 获取过去10年的年报数据
for year in range(curr_year - 10, curr_year):report_date = f"{year}1231"stock_yjbb_em_df = ak.stock_yjbb_em(date=report_date)yearly_data_df = stock_yjbb_em_df[["股票代码", "营业总收入-营业总收入", "净利润-净利润"]].drop_duplicates()yearly_data_df.rename(columns={"营业总收入-营业总收入": f"营业总收入_{year}","净利润-净利润": f"净利润_{year}"}, inplace=True)# 左连接融合数据basic_report_df = pd.merge(basic_report_df, yearly_data_df, on="股票代码", how="left")# 保存数据到Excel
basic_report_df.to_excel("个股近十年业绩数据.xlsx", index=False)
  0%|          | 0/19 [00:00<?, ?it/s]0%|          | 0/20 [00:00<?, ?it/s]0%|          | 0/21 [00:00<?, ?it/s]0%|          | 0/22 [00:00<?, ?it/s]0%|          | 0/22 [00:00<?, ?it/s]0%|          | 0/23 [00:00<?, ?it/s]0%|          | 0/23 [00:00<?, ?it/s]0%|          | 0/24 [00:00<?, ?it/s]0%|          | 0/24 [00:00<?, ?it/s]0%|          | 0/24 [00:00<?, ?it/s]
basic_report_df
股票代码股票名称公司ID公司名称公司简称公司英文名称公司英文简称主营业务经营范围地区编码...营业总收入_2020净利润_2020营业总收入_2021净利润_2021营业总收入_2022净利润_2022营业总收入_2023净利润_2023营业总收入_2024净利润_2024
0920088科力股份T003003664新疆科力新技术发展股份有限公司科力股份Xinjiang Keli New Technology Development Co.,Ltd.NaN油田生产过程中的技术服务、方案设计、油田化学助剂产品和油田专用设备的生产与销售。道路普通货物运输;总险货物运输;与石油天然气开采有关的辅助活动;化工产品、机械设备生产、...650203.0...3.121663e+083.018744e+063.346563e+083.552466e+074.466900e+084.582682e+073.585457e+085.206610e+073.796124e+085.376342e+07
1873169七丰精工T000160587七丰精工科技股份有限公司七丰精工Qifeng Precision Industry Science And Technic ...QIFENG中高端紧固件的研发、生产和销售。铁道道钉、铁道轨道配件、冲压件、紧固件、电子元件配件、仪器仪表配件、机械配件的研发、制造...330424.0...1.721484e+083.475860e+072.190866e+083.622736e+072.018319e+083.713122e+071.665355e+081.963572e+071.832285e+081.393948e+07
2300157新锦动力T000029111新锦动力集团股份有限公司新锦动力New Jcm Group Co.,Ltd.NEW JCM石油勘探产业链的软、硬件产品的研发与销售。为石油和天然气开采提供服务;石油天然气勘探技术、石油天然气设备、仪器仪表技术开发、技术培...110108.0...6.959377e+08-1.209104e+094.205594e+08-7.190443e+084.638033e+08-1.080289e+086.565801e+08-1.747739e+085.521395e+08-1.657814e+08
3300645正元智慧T000242179正元智慧集团股份有限公司正元智慧Zhengyuan Zhihui Group Co.,Ltd.ZHENGYUAN ZHIHUI智慧校园、智慧园区和行业智慧化系统建设及增值运营服务。许可项目:第一类增值电信业务;第二类增值电信业务;建筑智能化系统设计;建设工程施工;职业...330110.0...8.255948e+082.763797e+079.475519e+085.841343e+071.065043e+097.121338e+071.224653e+094.185133e+071.194849e+091.199187e+07
4300581晨曦航空T000186700西安晨曦航空科技股份有限公司晨曦航空Xi’An Chenxi Aviation Technology Corp.,Ltd.ChenXi Aviation研发、生产、销售航空机电产品及提供相关专业技术服务。一般项目:导航、测绘、气象及海洋专用仪器制造;卫星导航服务;通信设备制造;信息系统集成服...610113.0...2.707577e+086.295654e+072.241767e+082.672265e+072.330823e+083.567901e+072.333504e+085.754193e+061.405277e+08-2.658507e+07
..................................................................
5718000018神城A退01000018神州长城股份有限公司神州长城Sino Greatwall Co.,Ltd.SinoGreatWallSino-B建筑装饰工程设计与施工及建筑相关工程施工。生产经营纺织工业品及所需的原材料,辅料,机械设备,各种面料服装,井提供相关的服务(不含现...511011.0...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
5719000015PT中浩ANaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
5720000013*ST石化ANaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
5721000005ST星源01000005深圳世纪星源股份有限公司世纪星源Shenzhen Fountain Corporationfountain绿色低碳城市社区建设相关的服务业务。生产经营各种喷胶布、针刺布、缝编尼纺布、粘合布、纤维裥棉色织、印花布以及服装、服装面料、...440303.0...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
5722000003PT金田ANaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN

5723 rows × 61 columns

对这10年的所有股票主营业务收入和净利润求和:

# 10年主营业务收入
income_columns = [col for col in basic_report_df.columns if col.startswith("营业总收入_")]
# 10年净利润
profit_columns = [col for col in basic_report_df.columns if col.startswith("净利润_")]# 计算每年主营收入总额
total_income = basic_report_df[income_columns].sum()
# 计算每年净利润总额
total_profit = basic_report_df[profit_columns].sum()
# 打印每年主营收入和净利润总额
print("每年主营业务收入总额:", total_income)
print("每年净利润总额:", total_profit)
每年主营业务收入总额: 营业总收入_2015    3.244243e+13
营业总收入_2016    3.530041e+13
营业总收入_2017    4.221242e+13
营业总收入_2018    4.896717e+13
营业总收入_2019    5.400279e+13
营业总收入_2020    5.598929e+13
营业总收入_2021    6.720450e+13
营业总收入_2022    7.103035e+13
营业总收入_2023    7.219715e+13
营业总收入_2024    7.197848e+13
dtype: float64
每年净利润总额: 净利润_2015    2.852718e+12
净利润_2016    3.037920e+12
净利润_2017    3.669118e+12
净利润_2018    3.939361e+12
净利润_2019    4.253864e+12
净利润_2020    4.365113e+12
净利润_2021    5.275212e+12
净利润_2022    5.503174e+12
净利润_2023    5.379411e+12
净利润_2024    5.220673e+12
dtype: float64

使用matplotlib绘制图像:

import matplotlib.pyplot as pltyears = [col.split('_')[-1] for col in income_columns]
plt.rcParams['font.sans-serif']=['Microsoft YaHei'] # 用来正常显示中文标签
plt.figure(figsize=(10, 6))
plt.plot(years, total_income.values, marker='o', label='主营业务收入总额')
plt.plot(years, total_profit.values, marker='o', label='净利润总额')
plt.xlabel('年份')
plt.ylabel('金额')
plt.title('近十年主营业务收入与净利润总额')
plt.legend()
plt.grid(True)
plt.tight_layout()
plt.show()

折线图

总结

本笔记通过AkShare接口获取了A股上市公司近十年的业绩报表数据,并结合个股基本信息,实现了多年度主营业务收入和净利润的整合分析。我们首先演示了单年度报表的获取与保存,随后批量获取了过去十年所有上市公司的年报数据,并与公司基本信息表融合,形成了包含主营收入和净利润的宽表。通过对各年度主营收入和净利润的总和进行统计和可视化,直观展示了A股整体业绩的变化趋势。该流程为后续深入分析行业、公司成长性及财务健康状况等提供了坚实的数据基础。

http://www.lqws.cn/news/522091.html

相关文章:

  • [省选联考 2025] 推箱子
  • Java 的强制类型转换
  • Sortablejs动态同类型穿插
  • npm 报错:“无法加载文件 ...npm.ps1,因为在此系统上禁止运行脚本” 解决方案(附执行策略说明)
  • 创新让生活更美好丨“鑫亘科技亮相2025上海CMEF,创新医疗材料引领未来!”
  • 【Docker基础】Docker容器管理:docker pause、stop、kill区别
  • Gemini 2.5 Pro vs Claude 4:2025年高考物理真题实战对比评测(国内直接使用)
  • 【Java高频面试问题】JVM篇
  • python接口测试参数multipart/form-data格式不能有多余的空格或 tab 缩进
  • 逆向入门(8)汇编篇-rol指令的学习
  • Windows下Zookeeper客户端启动缓慢问题分析与解决方案
  • oracle物化视图
  • Jenkins JNLP与SSH节点连接方式对比及连接断开问题解决方案
  • 强化学习概述
  • 【Python】图像+点云 结合显示
  • Linux 内存管理之page cache
  • 【PyTorch】保存和加载模型
  • 【cursor实战】分析python下并行、串行计算性能
  • <六> k8s + promtail + loki + grafana初探
  • 深度学习入门--(二)感知机
  • 利用代理IP爬取Shopee网页数据
  • C/C++中调用Java实现
  • keil5 cannot copy license file to “Download“ folder
  • 阿里云Web应用防火墙3.0使用CNAME接入传统负载均衡CLB
  • 量学云讲堂王岩江宇龙2025年第58期视频 主课正课系统课+收评
  • 【EDA软件】【应用功能子模块网表提供和加载编译方法】
  • Web层注解
  • 浙大/浙工大合作iMeta(1区 | IF 33.2):单微生物RNA-seq + 聚类解析肠道关键种代谢功能
  • MySQL常用函数性能优化及索引影响分析
  • ES和 Kafka 集群搭建过程中的典型问题、配置规范及最佳实践