3、数据获取基础:使用Python获取A股板块资金流向数据(基于akshare库)
做量化交易,数据是地基。没有数据,再牛的策略也是空中楼阁。
我个人习惯,在分析主力资金动向之前,先把数据获取这步走扎实。今天我们就来聊聊,怎么用Python把A股板块的资金流向数据拿到手。工具嘛,就用akshare——一个非常好用的开源库。
3.1 为什么选akshare?
市面上能拿数据的库不少,比如tushare、baostock。但我为什么推荐akshare?
- 免费且开源:不用花钱买积分,也不用担心哪天接口被封。
- 接口丰富:股票、基金、期货、板块数据,基本覆盖了A股主流数据源。
- 更新及时:我去年做回测时发现,akshare的板块资金流向数据,基本能做到T+1更新。
说白了,对于个人投资者和中小团队,akshare是性价比最高的选择。
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.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 数据清洗与整理
拿到的原始数据,通常需要清洗一下才能用。我一般做这几步:
- 重命名列名:把中文列名改成英文,方便后续处理。
- 转换数据类型:金额列从字符串转成数值,不然没法计算。
- 排序:按主力净流入降序排列,方便看哪些板块最受资金青睐。
# 数据清洗示例
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 知识体系总览
为了让你更直观地理解本章的知识结构,我画了一张流程图:
3.7 避坑指南
做数据获取,难免遇到各种问题。我把自己踩过的坑总结一下:
- 接口返回空数据:检查日期是否为交易日。非交易日没有数据。
- 数据格式不一致:金额列有时带逗号,有时不带。统一用
str.replace处理。 - 网络超时:akshare依赖网络请求,如果网络不稳定,加个
time.sleep重试机制。 - 版本更新:akshare更新频繁,接口名可能变。建议锁定版本号,比如
pip install akshare==1.14.0。
3.8 实战小练习
光看不练,等于白学。我建议你动手试试:
- 获取最近5个交易日的板块资金流向数据。
- 找出每天主力净流入前3的板块。
- 看看这些板块有没有重复出现的?如果有,说明资金在持续流入。
这个练习,说白了就是板块轮动追踪的雏形。你做完之后,会发现资金流向的规律其实挺明显的。
好了,数据获取这块就讲到这里。记住一句话:数据质量决定策略上限。把基础打牢,后面的分析才能站得住脚。