【Python量化金融实战】-第2章:金融市场数据获取与处理:2.1 数据源概览:Tushare、AkShare、Baostock、通联数据(DataAPI)
本章将详细介绍四大主流金融数据源(Tushare、AkShare、Baostock、通联数据(DataAPI)),分析其特点与适用场景,并通过实战案例展示数据获取与处理的全流程。
👉 点击关注不迷路
👉 点击关注不迷路
👉 点击关注不迷路
文章大纲
- 2.1.1 Tushare
- 2.1.2 AkShare
- 2.1.3 Baostock
- 2.1.4 通联数据(Data API)
- 2.1.5 选择建议与注意事项
- 2.1.6 常见问题解决方案
2.1.1 Tushare
Tushare 是国内最知名的开源金融数据接口之一,提供股票、期货、基金、外汇、数字货币等多种数据。其特点包括:
-
高频数据:提供
Level2行情、资金流向等特色数据 -
数据覆盖广:支持A股、港股、美股的历史行情、财务数据、市场新闻等。
-
易用性高:返回数据格式为Pandas DataFrame,便于直接分析与可视化。
-
免费与付费结合:基础数据(如日线行情)免费,但部分高频数据需通过积分或付费获取。
-
实战案例:获取A股行情与资金流分析

-
运行效果展示:

2.1.2 AkShare
AkShare 是完全开源且免费的金融数据接口库,数据源涵盖东方财富、新浪财经等多个平台,特点包括:
-
多维度数据:提供股票、期货、期权、宏观经济、区块链等数据,支持实时和历史行情。
-
社区活跃:通过官方微信群和文档持续更新,适合需要灵活爬取数据的用户。
-
局限性:部分高频数据(如分钟级)获取有限,需结合其他工具补充。
示例代码:import akshare as ak import pandas as pd import matplotlib.pyplot as plt import seaborn as sns# 获取 A 股日线数据,以平安银行(000001.SZ)为例 stock_daily = ak.stock_zh_a_daily(symbol="sz000001", start_date="20230101", end_date="20231231", adjust="qfq")# 数据统计:计算收盘价的均值、最大值和最小值 close_stats = stock_daily['close'].describe()[['mean', 'max', 'min']] print("收盘价统计信息:") print(close_stats)# 可视化:绘制收盘价折线图 plt.figure(figsize=(12, 6)) plt.plot(stock_daily['date'], stock_daily['close'], label='Close Price') plt.title('Ping An Bank Daily Close Price in 2023') plt.xlabel('Date') plt.ylabel('Close Price') plt.legend() plt.xticks(rotation=45) plt.show()# 可视化:绘制收盘价的箱线图 plt.figure(figsize=(8, 6)) sns.boxplot(y=stock_daily['close']) plt.title('Box Plot of Ping An Bank Daily Close Price in 2023') plt.ylabel('Close Price') plt.show()
2.1.3 Baostock
Baostock 是一个专注于国内证券数据的开源平台,无需注册即可使用,特点包括:
- 分钟级数据:免费提供股票、指数的分钟线数据,适合高频策略研究。
- 数据质量高:数据经过清洗和标准化,可直接用于回测和建模。
- 接口简洁:支持Python直接调用,返回结构清晰的DataFrame。
示例代码:
import baostock as bs
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns# 登陆系统
lg = bs.login()
# 显示登陆返回信息
print('login respond error_code:'+ lg.error_code)
print('login respond error_msg:'+ lg.error_msg)# 获取沪深 300 指数成份股
rs = bs.query_hs300_stocks()
hs300_stocks = []
while (rs.error_code == '0') & rs.next():# 获取一条记录,将记录合并在一起hs300_stocks.append(rs.get_row_data())
hs300_df = pd.DataFrame(hs300_stocks, columns=rs.fields)# 选择其中一只股票,如中国平安(601318.SH)
stock_code = 'sh.601318'
start_date = '2023-01-01'
end_date = '2023-12-31'# 获取股票历史 K 线数据
rs = bs.query_history_k_data_plus(stock_code,"date,code,open,high,low,close,preclose,volume,amount,adjustflag,turn,tradestatus,pctChg,isST",start_date=start_date, end_date=end_date,frequency="d", adjustflag="3")
data_list = []
while (rs.error_code == '0') & rs.next():# 获取一条记录,将记录合并在一起data_list.append(rs.get_row_data())
df = pd.DataFrame(data_list, columns=rs.fields)# 数据类型转换
df['date'] = pd.to_datetime(df['date'])
df[['open', 'high', 'low', 'close', 'preclose', 'volume', 'amount', 'turn', 'pctChg']] = df[['open', 'high', 'low', 'close', 'preclose', 'volume', 'amount', 'turn', 'pctChg']].astype(float)# 数据统计:计算收盘价的均值、最大值、最小值
close_stats = df['close'].describe()[['mean', 'max', 'min']]
print("收盘价统计信息:")
print(close_stats)# 可视化:绘制收盘价折线图
plt.figure(figsize=(12, 6))
plt.plot(df['date'], df['close'], label='Close Price')
plt.title('Ping An Bank Daily Close Price in 2023')
plt.xlabel('Date')
plt.ylabel('Close Price')
plt.legend()
plt.xticks(rotation=45)
plt.show()# 可视化:绘制收盘价的箱线图
plt.figure(figsize=(8, 6))
sns.boxplot(y=df['close'])
plt.title('Box Plot of Ping An Bank Daily Close Price in 2023')
plt.ylabel('Close Price')
plt.show()# 可视化:绘制成交量柱状图
plt.figure(figsize=(12, 6))
plt.bar(df['date'], df['volume'], label='Volume')
plt.title('Ping An Bank Daily Volume in 2023')
plt.xlabel('Date')
plt.ylabel('Volume')
plt.legend()
plt.xticks(rotation=45)
plt.show()# 可视化:绘制收盘价和成交量的散点图
plt.figure(figsize=(8, 6))
sns.scatterplot(x=df['close'], y=df['volume'])
plt.title('Scatter Plot of Ping An Bank Close Price and Volume')
plt.xlabel('Close Price')
plt.ylabel('Volume')
plt.show()# 登出系统
bs.logout()




2.1.4 通联数据(Data API)
通联数据通过优矿(UQER)等平台提供API接口,特点包括:
- 专业级数据:涵盖股票、因子、财报、行业大数据等,适合深度量化研究。
- 免费与开放:注册优矿账号后可免费获取大部分基础数据,部分高频数据需企业合作。
- 集成工具链:支持数据清洗、合并、标准化等操作,可直接在Notebook中分析。
示例代码(优矿平台):
import datapipe
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns# 替换为你自己的 API Token
token = "your_api_token"
client = datapipe.DatapipeClient(token)# 获取某只股票(如 000001.SZ 平安银行)在指定日期范围的日线数据
symbol = "000001.SZ"
start_date = "2023-01-01"
end_date = "2023-12-31"try:df = client.get_historical_bars(symbol, start_date=start_date, end_date=end_date)print("成功获取股票日线数据:")print(df.head())
except Exception as e:print(f"获取数据时出错:{e}")# 计算收盘价的基本统计信息
close_stats = df['close'].describe()
print("收盘价的基本统计信息:")
print(close_stats)# 计算成交量的总和与平均值
volume_sum = df['volume'].sum()
volume_mean = df['volume'].mean()
print(f"成交量总和: {volume_sum}")
print(f"成交量平均值: {volume_mean}")# 设置图片清晰度
plt.rcParams['figure.dpi'] = 300# 绘制收盘价折线图
plt.figure(figsize=(12, 6))
plt.plot(df['date'], df['close'], label='Close Price')
plt.title(f'{symbol} 收盘价走势 ({start_date} - {end_date})')
plt.xlabel('日期')
plt.ylabel('收盘价')
plt.legend()
plt.xticks(rotation=45)
plt.show()# 绘制成交量柱状图
plt.figure(figsize=(12, 6))
plt.bar(df['date'], df['volume'], label='Volume')
plt.title(f'{symbol} 成交量走势 ({start_date} - {end_date})')
plt.xlabel('日期')
plt.ylabel('成交量')
plt.legend()
plt.xticks(rotation=45)
plt.show()# 绘制收盘价的箱线图
plt.figure(figsize=(8, 6))
sns.boxplot(y=df['close'])
plt.title(f'{symbol} 收盘价箱线图')
plt.ylabel('收盘价')
plt.show()# 绘制收盘价和成交量的散点图
plt.figure(figsize=(8, 6))
sns.scatterplot(x=df['close'], y=df['volume'])
plt.title(f'{symbol} 收盘价与成交量散点图')
plt.xlabel('收盘价')
plt.ylabel('成交量')
plt.show()
2.1.5 选择建议与注意事项
- 1. 免费性与适用场景:
Tushare和AkShare适合基础研究,Baostock适合高频数据需求,通联数据适合专业因子分析。
- 2. 数据更新与稳定性:
Tushare和AkShare依赖社区维护,可能存在接口变动风险;Baostock和通联数据由官方维护,稳定性更高。
- 3. 合规与限制:
- 部分接口(如
Tushare)需遵守数据调用频率限制,避免因超额请求被封禁。
- 部分接口(如
2.1.6 常见问题解决方案
API限制报错:- 使用
time.sleep(60)在循环中增加延迟 - 升级付费套餐或切换备用API密钥
- 使用
- 时区不一致:
# 统一为北京时间 data = data.tz_localize('UTC').tz_convert('Asia/Shanghai') - 中文乱码处理:
plt.rcParams['font.sans-serif'] = ['SimHei'] # 设置中文字体 plt.rcParams['axes.unicode_minus'] = False # 解决负号显示问题
- 学习路径建议
-
- 新手阶段:从Yahoo Finance开始练习基础数据处理
-
- 进阶阶段:通过Alpha Vantage学习实时数据接口调用
-
- 专业阶段:使用Tushare+Quandl构建A股多因子模型
-
- 高阶应用:结合多源数据进行宏观经济与市场的联动分析
-
通过灵活运用不同数据源,开发者可以构建覆盖全球市场的量化分析系统。实际应用中需特别注意数据授权协议与更新频率,确保策略的合规性与时效性。
相关文章:
【Python量化金融实战】-第2章:金融市场数据获取与处理:2.1 数据源概览:Tushare、AkShare、Baostock、通联数据(DataAPI)
本章将详细介绍四大主流金融数据源(Tushare、AkShare、Baostock、通联数据(DataAPI)),分析其特点与适用场景,并通过实战案例展示数据获取与处理的全流程。 👉 点击关注不迷路 👉 点击…...
详解golang的Gengine规则引擎
一:简介 Gengine是一款基于golang和AST(抽象语法树)开发的规则引擎, Gengine支持的语法是一种自定义的DSL, Gengine通过内置的解释器对规则文件进行解析,构建规则模型,进行相应的规则计算和数据处理。Gengine于2020年7月由哔哩哔哩(bilibili.com)授权开源。Gengine现已应用…...
首次使用WordPress建站的经验分享(一)
之前用过几种内容管理系统(CMS),如:dedeCMS、phpCMS、aspCMS,主要是为了前端独立建站,达到预期的效果,还是需要一定的代码基础的,至少要有HTML、Css、Jquery基础。 据说WordPress 是全球最流行的内容管理系统CMS,从现在开始记录一下使用WordPress 独立建站的步骤 选购…...
MySQL缓存命中率
什么是缓存命中率 MySQL 缓存命中率是衡量 MySQL 查询性能的一个重要指标,它表示缓存中的数据被查询请求成功返回的比例。较高的缓存命中率通常意味着较少的磁盘 I/O 操作,查询响应速度较快。MySQL 中有多个类型的缓存,如 查询缓存、InnoD…...
Mysql 主从集群同步延迟问题怎么解决
目录 前言: 复制过程分为几个步骤: 一、同步延迟的危害 二、同步延迟的常见原因 1. 主库写入压力过大 2. 网络传输瓶颈 3. 从库硬件性能不足 4. 配置参数不合理 5. 特殊操作影响 三、深度诊断方法 1. 查看同步状态 2. 性能分析工具 四、十大解…...
【量化科普】Sharpe Ratio,夏普比率
【量化科普】Sharpe Ratio,夏普比率 🚀🚀🚀量化软件开通🚀🚀🚀 🚀🚀🚀量化实战教程🚀🚀🚀 在量化投资领域,…...
Unity Shader 学习13:屏幕后处理 - 使用高斯模糊的Bloom辉光效果
目录 一、基本的后处理流程 - 以将画面转化为灰度图为例 1. C#调用shader 2. Shader实现效果 二、Bloom辉光效果 1. 主要变量 2. Shader效果 (1)提取较亮区域 - pass1 (2)高斯模糊 - pass2&3 (3ÿ…...
vue3中Watch和WatchEffect的用法和区别
目录 Ⅰ.Watch 1.基本用法和三个参数的解析 (1).参数1:需要监听的数据源 (2).参数2:当监听数据发生变化时需要执行的回调函数 (3).参数3:配置选项 深层监听器(多种形式): 关于watch的返回值问题: Ⅱ .WatchEff…...
Css3重点知识讲解
选择器 优先级: id 选择器 > 类选择器 > 标签选择器 类选择器: .myClass {color: blue; }id 选择器(全局唯一): #myId {color: green; }标签选择器: p {color: red; }层次选择器: /…...
三、《重学设计模式》-单例模式
单例模式 单例模式分为四大类,饿汉式、懒汉式、静态内部类、枚举 饿汉式 优点:类装载时进行实例化,避免同步问题 缺点:造成内存浪费 实现一 1.构造器私有化 2.内部创建对象实例 3.提供静态方法 public class Type1 {public s…...
SpringBoot3整合Swagger3时出现Type javax.servlet.http.HttpServletRequest not present错误
目录 错误详情 错误原因 解决方法 引入依赖 修改配置信息 创建文件 访问 错误详情 错误原因 SpringBoot3和Swagger3版本不匹配 解决方法 使用springdoc替代springfox,具体步骤如下: 引入依赖 在pom.xml文件中添加如下依赖: <…...
项目实战--网页五子棋(匹配模块)(4)
上期我们完成了游戏大厅的前端部分内容,今天我们实现后端部分内容 1. 维护在线用户 在用户登录成功后,我们可以维护好用户的websocket会话,把用户表示为在线状态,方便获取到用户的websocket会话 package org.ting.j20250110_g…...
Python闭包知多少
目录 目标 Python版本 概述 实战 基本语法 数据隐藏和封装 延迟计算 回调函数 目标 熟悉闭包语法结构,通过案例来了解闭包的使用场景。 Python版本 Python 3.9.18 概述 闭包(Closure) 闭包是一个函数对象(即内部函数或被…...
【Java毕业设计】商城购物系统(附源码+数据库脚本)
本系统是基于JavaEEServletJSPMysql实现的商城购物系统。包括用户登录、用户注册、商品分类、添加购物车、订单支付等基本功能,具体页面及功能如下: 感谢阅读! 如需获取完整项目源码及更多项目信息,可添加V:...
css特异性,继承性
html <div class"introduce"><div class"title">介绍</div><div class"card-box"><div class"card"><div class"title">管理</div></div></div> </div> scs…...
POST请求提交数据的三种方式及通过Postman实现
1、什么是POST请求? POST请求是HTPP协议中一种常用的请求方法,它的使用场景是向客户端向服务器提交数据,比如登录、注册、添加等场景。另一种常用的请求方法是GET,它的使用场景是向服务器获取数据。 2、POST请求提交数据的常见编…...
Spring Boot 整合 Spring MVC /(整合Web)笔记
1. Spring Boot 整合 Web 功能 Spring Boot 通过自动配置简化了 Spring MVC 的集成。只需在 pom.xml 中添加 spring-boot-starter-web 依赖,Spring Boot 就会自动配置 Spring MVC 的相关组件。 <dependency><groupId>org.springframework.boot</gr…...
[特殊字符]清华大学:DeepSeek从入门到精通.pdf(清华领航,驾驭DeepSeek,开启AI新境界)
不愧是清华大学出品的deepseek手册,简直是新手 福音,非常实用! 这份《DeepSeek:从入门到精通》手册从基础到高 阶,手把手教你玩转DeepSeek,特别适合刚入门的小白,拿来就能用! 1.Deep…...
LeetCode 热题100 2. 两数相加
LeetCode 热题100 | 2. 两数相加 大家好,今天我们来解决一道经典的算法题——两数相加。这道题在 LeetCode 上被标记为中等难度,要求我们将两个非空的链表表示的整数相加,并以相同形式返回一个表示和的链表。下面我将详细讲解解题思路&#…...
深度学习技术全景图:从基础架构到工业落地的超级进化指南
🔍 目录导航 基础架构革命训练优化秘技未来战场前瞻 🧩 一、基础架构革命 1.1 前馈神经网络(FNN) ▍核心结构 import torch.nn as nnclass FNN(nn.Module):def __init__(self):super().__init__()self.fc1 nn.Linear(784, 25…...
PyTorch-基础(CUDA、Dataset、transforms、卷积神经网络、VGG16)
PyTorch-基础 环境准备 CUDA Toolkit安装(核显跳过此步骤) CUDA Toolkit是NVIDIA的开发工具,里面提供了各种工具、如编译器、调试器和库 首先通过NVIDIA控制面板查看本机显卡驱动对应的CUDA版本,如何去下载对应版本的Toolkit工…...
IO/网络IO基础全览
目录 IO基础CPU与外设1. 程序控制IO(轮询)2. 中断中断相关知识中断分类中断处理过程中断隐指令 3. DMA(Direct Memory Access) 缓冲区用户空间和内核空间IO操作的拷贝概念传统IO操作的4次拷贝减少一个CPU拷贝的mmap内存映射文件(m…...
【DeepSeek-R1背后的技术】系列十一:RAG原理介绍和本地部署(DeepSeekR1+RAGFlow构建个人知识库)
【DeepSeek-R1背后的技术】系列博文: 第1篇:混合专家模型(MoE) 第2篇:大模型知识蒸馏(Knowledge Distillation) 第3篇:强化学习(Reinforcement Learning, RL)…...
鸿蒙开发深入浅出04(首页数据渲染、搜索、Stack样式堆叠、Grid布局、shadow阴影)
鸿蒙开发深入浅出04(首页数据渲染、搜索、Stack样式堆叠、Grid布局、shadow阴影) 1、效果展示2、ets/pages/Home.ets3、ets/views/Home/SearchBar.ets4、ets/views/Home/NavList.ets5、ets/views/Home/TileList.ets6、ets/views/Home/PlanList.ets7、后端…...
【数据结构】B树家族详解:B树、B+树、B*
一、B树(B-Tree) 1. 定义 B树是一种平衡多路查找树,自平衡的树,能够保持数据有序,设计目标是为减少磁盘I/O次数。适用于需要频繁读写磁盘的场景(如数据库、文件系统)。 2、B树基本性质 节点键值数量限制: 对于 m 阶 B 树,根节点至少有 1 个键值,最多有 m - 1 个…...
C语言数据结构—二叉树的链式结构实现
目录 1、建立二叉树 1.1 二叉树的结构 1.2 手动建立二叉树 2、二叉树的遍历 2.1 二叉树的三种遍历方式 2.1.1 前序遍历 2.1.2 中序遍历 2.1.2 后序遍历 3、求二叉树的结点数和二叉树的高度 3.1 求二叉树结点数 3.2 求二叉树叶子结点 3.3 求二叉树第k层结点的个数 …...
Java 大视界 —— Java 大数据在智能零售动态定价策略中的应用实战(98)
💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…...
如何实现修改jvm中类的属性开源项目
根据你的需求,以下是一些可以实现类似阿里巴巴 Diamond 功能的框架和工具,这些项目可以帮助你动态推送配置信息,从而实现类似的功能: 1. Nacos Nacos 是一个更现代的动态配置服务,支持配置管理、服务发现和元数据管理…...
危化品经营单位安全管理人员的职责及注意事项
危化品经营单位安全管理人员肩负着保障经营活动安全的重要责任,以下是其主要职责及注意事项: 职责 1. 安全制度建设与执行:负责组织制定本单位安全生产规章制度、操作规程和生产安全事故应急救援预案,确保这些制度符合国家相关法…...
腾讯云大模型知识引擎×DeepSeek赋能文旅
腾讯云大模型知识引擎DeepSeek赋能文旅 ——以合肥文旅为例的技术革新与实践路径 一、技术底座:知识引擎与DeepSeek的融合逻辑 腾讯云大模型知识引擎与DeepSeek模型的结合,本质上是**“知识库检索增强生成(RAG)实时联网能力”**…...
