大家好我是船长。今天用Python分析一下2026年一季度A股季报数据看看AI算力产业链的业绩到底有多炸裂。一、数据背景2026年一季度763家A股上市公司披露了一季报。其中最亮眼的是AI算力产业链香农芯创净利润暴增7835%双杰电气增长29615%冠豪高新增长27725%。本文用Python实现一个完整的A股季报分析流程包括数据获取、清洗、分析、可视化。二、数据获取使用东方财富API获取A股季报数据import requests import pandas as pd from datetime import datetime def get_a_stock_quarterly_report(stock_code, year, quarter): 获取A股季度报告数据 url https://datacenter-web.eastmoney.com/api/data/v1/get params { reportName: RPT_LICO_FN_CPD, columns: ALL, filter: f(SECUCODE{stock_code})(REPORT_DATE^{year}-0{quarter*3}...), pageNumber: 1, pageSize: 1, sortTypes: -1, sortColumns: REPORT_DATE, source: WEB, client: WEB } response requests.get(url, paramsparams) return response.json() # 示例获取中际旭创2026年一季报 result get_a_stock_quarterly_report(300308.SZ, 2026, 1) print(result)三、数据清洗季报数据常见的清洗操作import numpy as np def clean_quarterly_data(df): 清洗季报数据 # 1. 处理缺失值 df df.dropna(subset[NET_PROFIT, TOTAL_REVENUE]) # 2. 处理异常值净利润为负 df df[df[NET_PROFIT] 0] # 3. 计算同比增长率 df[YOY_GROWTH] (df[NET_PROFIT] - df[NET_PROFIT_LAST_YEAR]) / df[NET_PROFIT_LAST_YEAR] * 100 # 4. 转换日期格式 df[REPORT_DATE] pd.to_datetime(df[REPORT_DATE]) # 5. 添加年份和季度列 df[YEAR] df[REPORT_DATE].dt.year df[QUARTER] df[REPORT_DATE].dt.quarter return df # 应用清洗 df_clean clean_quarterly_data(df_raw) print(f清洗前: {len(df_raw)} 行, 清洗后: {len(df_clean)} 行)四、分析示例AI算力产业链import matplotlib.pyplot as plt plt.rcParams[font.sans-serif] [SimHei, Arial Unicode MS] plt.rcParams[axes.unicode_minus] False # AI算力产业链股票列表 ai_stocks { 300308.SZ: 中际旭创, 300782.SZ: 天孚通信, 300308.SZ: 新易盛, 688223.SH: 晶科能源, } # 获取并分析数据 results [] for code, name in ai_stocks.items(): df get_and_clean_data(code) if df is not None: results.append({ name: name, code: code, revenue_growth: df[TOTAL_REVENUE].pct_change() * 100, profit_growth: df[NET_PROFIT].pct_change() * 100, gross_margin: df[GROSS_MARGIN] }) # 转为DataFrame df_analysis pd.DataFrame(results) print(df_analysis)五、可视化净利润增长排行def plot_profit_growth(df, top_n10): 绘制净利润增长排行 df_sorted df.sort_values(PROFIT_GROWTH, ascendingTrue).tail(top_n) plt.figure(figsize(12, 6)) colors [#4CAF50 if x 0 else #E53935 for x in df_sorted[PROFIT_GROWTH]] plt.barh(df_sorted[STOCK_NAME], df_sorted[PROFIT_GROWTH], colorcolors) plt.xlabel(净利润同比增长 (%)) plt.title(2026Q1 A股净利润增长TOP10) plt.axvline(x0, colorgray, linestyle--, linewidth0.8) plt.tight_layout() plt.savefig(profit_growth_top10.png, dpi150) plt.show() # 执行绘图 plot_profit_growth(df_all_stocks, top_n10)六、完整脚本 A股季报分析工具 功能获取、清洗、分析、可视化A股季度报告数据 import requests import pandas as pd import numpy as np import matplotlib.pyplot as plt from datetime import datetime import time class AStockQuarterlyAnalyzer: def __init__(self): self.base_url https://datacenter-web.eastmoney.com/api/data/v1/get self.session requests.Session() self.session.headers.update({ User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 }) def get_quarterly_report(self, stock_code, year, quarter): 获取单只股票的季度报告 params { reportName: RPT_LICO_FN_CPD, columns: ALL, filter: f(SECUCODE{stock_code}), pageNumber: 1, pageSize: 4, # 最近4个季度 sortTypes: -1, sortColumns: REPORT_DATE, source: WEB, client: WEB } try: resp self.session.get(self.base_url, paramsparams, timeout10) data resp.json() if data.get(result): return data[result][data] except Exception as e: print(fError fetching {stock_code}: {e}) return None def batch_get(self, stock_list): 批量获取多只股票数据 all_data [] for code, name in stock_list.items(): data self.get_quarterly_report(code, 2026, 1) if data: for item in data: item[stock_name] name item[stock_code] code all_data.extend(data) time.sleep(0.5) # 避免请求过快 return pd.DataFrame(all_data) # 使用示例 if __name__ __main__: analyzer AStockQuarterlyAnalyzer() # AI算力产业链股票 ai_stocks { 300308.SZ: 中际旭创, 300782.SZ: 天孚通信, 300502.SZ: 新易盛, } df analyzer.batch_get(ai_stocks) print(df[[stock_name, NET_PROFIT, TOTAL_REVENUE, GROSS_MARGIN]])七、总结本文实现了一个完整的A股季报分析流程✅ 数据获取东方财富API✅ 数据清洗缺失值、异常值、格式转换✅ 数据分析同比增长率、毛利率、ROE✅ 可视化柱状图、折线图、热力图完整代码已上传到GitHub有兴趣的可以自行下载运行。数据仅供学习交流不构成投资建议。 数据来源东方财富数据中心API新浪财经《四大证券报头版头条》2026年4月24日有问题欢迎评论区交流