大家好,我是船长。今天用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 = "datacenter-web.eastmoney.com/api/data/v1…" 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, params=params) 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_n=10): """绘制净利润增长排行""" df_sorted = df.sort_values('PROFIT_GROWTH', ascending=True).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'], color=colors)
plt.xlabel('净利润同比增长 (%)')
plt.title('2026Q1 A股净利润增长TOP10')
plt.axvline(x=0, color='gray', linestyle='--', linewidth=0.8)
plt.tight_layout()
plt.savefig('profit_growth_top10.png', dpi=150)
plt.show()
执行绘图
plot_profit_growth(df_all_stocks, top_n=10) `
六、完整脚本
`""" 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 = "datacenter-web.eastmoney.com/api/data/v1…" 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, params=params, timeout=10)
data = resp.json()
if data.get('result'):
return data['result']['data']
except Exception as e:
print(f"Error 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日)
有问题欢迎评论区交流!