Python分析A股季报:AI算力产业链数据实战(2026Q1)

0 阅读3分钟

大家好,我是船长。今天用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日)

有问题欢迎评论区交流!