3、数据获取基础:使用Python获取A股板块资金流向数据(基于akshare库)

做量化交易,数据是地基。没有数据,再牛的策略也是空中楼阁。

我个人习惯,在分析主力资金动向之前,先把数据获取这步走扎实。今天我们就来聊聊,怎么用Python把A股板块的资金流向数据拿到手。工具嘛,就用akshare——一个非常好用的开源库。

3.1 为什么选akshare?

市面上能拿数据的库不少,比如tushare、baostock。但我为什么推荐akshare?

  • 免费且开源:不用花钱买积分,也不用担心哪天接口被封。
  • 接口丰富:股票、基金、期货、板块数据,基本覆盖了A股主流数据源。
  • 更新及时:我去年做回测时发现,akshare的板块资金流向数据,基本能做到T+1更新。

说白了,对于个人投资者和中小团队,akshare是性价比最高的选择。

小提示:akshare依赖一些底层库,比如pandas、requests。建议用pip install akshare --upgrade安装最新版,避免版本冲突。

3.2 安装与导入

先装库,再导入。这一步没什么难度,但容易踩坑。

# 安装akshare
pip install akshare

# 导入库
import akshare as ak
import pandas as pd
import datetime

嗯,这里要注意:akshare的接口名经常变。我去年写课程时用的接口,今年可能就改名了。所以每次用之前,最好去官方文档看一眼最新接口名。

3.3 获取板块资金流向数据

akshare里有一个专门获取板块资金流向的函数:stock_sector_fund_flow_rank。它返回的是当日各板块的主力资金净流入、净流出数据。

我直接上代码,你们感受一下:

# 获取今日板块资金流向排名
df = ak.stock_sector_fund_flow_rank(indicator="今日")
print(df.head())

跑完这段代码,你会看到类似这样的输出:

板块名称 主力净流入(万元) 主力净流入占比(%) 涨跌幅(%)
半导体 125,678 3.45 2.15
白酒 89,234 2.12 1.87
新能源 67,890 1.98 1.56

你看,数据很直观。主力净流入最多的板块,往往就是当天资金抱团的方向。

核心逻辑:板块资金流向,反映的是大资金(主力)的集体行为。如果某个板块连续3天主力净流入,说明资金在持续加仓,这就是我们追踪的「板块轮动」信号。

3.4 获取历史板块资金流向

只看一天的数据,意义不大。我们需要历史数据,才能分析趋势。

akshare也支持按日期获取历史数据。我习惯这样写:

# 获取指定日期的板块资金流向
date_str = "2025-01-15"
df_history = ak.stock_sector_fund_flow_rank(indicator=date_str)
print(df_history.head())

注意:indicator参数可以传日期字符串,格式必须是"YYYY-MM-DD"。如果当天是交易日,返回的就是当天数据;如果是非交易日,可能会报错。

我曾经踩过这个坑:周末跑脚本,结果接口返回空数据,我还以为是代码写错了。后来加了个判断,如果是非交易日就跳过,问题就解决了。

3.5 数据清洗与整理

拿到的原始数据,通常需要清洗一下才能用。我一般做这几步:

  1. 重命名列名:把中文列名改成英文,方便后续处理。
  2. 转换数据类型:金额列从字符串转成数值,不然没法计算。
  3. 排序:按主力净流入降序排列,方便看哪些板块最受资金青睐。
# 数据清洗示例
df = ak.stock_sector_fund_flow_rank(indicator="今日")

# 重命名列
df.rename(columns={
    "板块名称": "sector",
    "主力净流入(万元)": "net_inflow",
    "主力净流入占比(%)": "inflow_ratio",
    "涨跌幅(%)": "pct_change"
}, inplace=True)

# 转换金额为数值(去掉逗号)
df["net_inflow"] = df["net_inflow"].str.replace(",", "").astype(float)

# 按净流入降序排列
df = df.sort_values("net_inflow", ascending=False)

print(df.head(10))

你看,清洗完之后,数据就干净多了。直接可以用来做分析或画图。

3.6 知识体系总览

为了让你更直观地理解本章的知识结构,我画了一张流程图:

板块资金流向数据获取流程 安装akshare库 导入库与设置参数 获取板块资金流向数据 数据清洗与整理 注:每日数据需在交易日下午15:30后获取

3.7 避坑指南

做数据获取,难免遇到各种问题。我把自己踩过的坑总结一下:

  • 接口返回空数据:检查日期是否为交易日。非交易日没有数据。
  • 数据格式不一致:金额列有时带逗号,有时不带。统一用str.replace处理。
  • 网络超时:akshare依赖网络请求,如果网络不稳定,加个time.sleep重试机制。
  • 版本更新:akshare更新频繁,接口名可能变。建议锁定版本号,比如pip install akshare==1.14.0
重要提醒:akshare的数据源来自东方财富等公开网站,仅供个人学习研究。不要用于商业用途,也不要高频请求,否则可能被封IP。

3.8 实战小练习

光看不练,等于白学。我建议你动手试试:

  1. 获取最近5个交易日的板块资金流向数据。
  2. 找出每天主力净流入前3的板块。
  3. 看看这些板块有没有重复出现的?如果有,说明资金在持续流入。

这个练习,说白了就是板块轮动追踪的雏形。你做完之后,会发现资金流向的规律其实挺明显的。

好了,数据获取这块就讲到这里。记住一句话:数据质量决定策略上限。把基础打牢,后面的分析才能站得住脚。

专注资料整理