第二章:Python金融数据环境搭建
说实话,很多刚入行的朋友问我:“做金融数据分析,第一步到底该干啥?”
我的回答永远是——先把你的电脑环境收拾利索了。别急着写代码,别急着调接口。环境没搭好,后面全是坑。我自己带过不少新人,十有八九的问题都出在环境配置上。
本章核心目标:搭建一套稳定、可复用的Python金融数据工作环境。包括Anaconda安装、Jupyter Notebook配置、Pandas/NumPy安装,以及Tushare和AkShare两个主流金融数据接口的入门。
2.1 Anaconda:为什么我坚持用它
Python环境管理工具不少,但Anaconda是我个人最推荐的。为什么?因为它把Python解释器、包管理器、以及最常用的数据科学库打包在一起了。你装一个Anaconda,相当于把半个工具箱都搬回家了。
我记得刚入行那会儿,还在用原生Python一个个pip安装包。装个Pandas要解决依赖冲突,装个Matplotlib又报错。折腾半天,代码一行没写。后来换了Anaconda,世界清净了。
安装步骤
- 去官网下载对应系统的Anaconda安装包(Python 3.9+版本)
- 安装时注意勾选“Add Anaconda to my PATH environment variable”
- 安装完成后,打开终端输入
conda --version验证
避坑指南:我曾经遇到过一位同事,安装时没勾选PATH选项,结果后面每次用conda都要切到安装目录。折腾了两天才发现是这个问题。所以安装时务必勾上,省得后面麻烦。
创建虚拟环境
做金融项目,我习惯每个项目建一个独立环境。这样不同项目之间的依赖不会打架。
# 创建一个名为 finance_env 的环境,指定Python版本
conda create -n finance_env python=3.9
# 激活环境
conda activate finance_env
# 退出环境
conda deactivate
你想想看,如果所有项目都挤在base环境里,A项目需要Pandas 1.3,B项目需要Pandas 2.0,那不就乱套了?虚拟环境就是干这个用的。
2.2 Jupyter Notebook:交互式分析的利器
Jupyter Notebook是我每天都要用的工具。它最大的好处是什么?——写一段代码,立刻看到结果。对于金融数据探索来说,这种即时反馈太重要了。
启动方式很简单:
# 在终端输入
jupyter notebook
浏览器会自动打开一个页面,默认端口是8888。我个人习惯把常用项目放在一个叫 finance_workspace 的文件夹里,启动时直接指定目录:
jupyter notebook --notebook-dir=/Users/yourname/finance_workspace
几个我常用的快捷键
| 快捷键 | 功能 | 说明 |
|---|---|---|
| Shift + Enter | 运行当前单元格 | 并自动跳转到下一个单元格 |
| Ctrl + Enter | 运行当前单元格 | 不跳转,留在原地 |
| Esc + A | 在上方插入单元格 | 先按Esc退出编辑模式 |
| Esc + B | 在下方插入单元格 | 同上 |
| Esc + M | 切换为Markdown模式 | 写文档说明用 |
小技巧:在Jupyter里写代码时,我习惯先用Markdown单元格写好思路,再写代码。这样回头翻看笔记时,能清楚知道当时是怎么想的。尤其是做金融策略回测,逻辑链条一长,没注释真的会忘。
2.3 Pandas与NumPy:金融数据的左膀右臂
这两个库是金融数据分析的基石。NumPy负责高效的数组运算,Pandas则提供了DataFrame这种类似Excel表格的数据结构。说白了,你处理股票行情数据、财务报表、时间序列,都离不开它们。
安装很简单,在Anaconda环境下通常已经预装了。如果没有,用conda安装:
conda install pandas numpy
或者用pip:
pip install pandas numpy
我个人更推荐用conda,因为它会自动处理依赖关系。用pip有时候会遇到版本冲突,尤其是当你同时装了很多金融库的时候。
快速验证安装
import pandas as pd
import numpy as np
# 创建一个简单的DataFrame
data = {
'股票代码': ['000001', '600036', '601318'],
'收盘价': [12.35, 38.92, 45.60],
'涨跌幅': [0.02, -0.01, 0.03]
}
df = pd.DataFrame(data)
print(df)
# NumPy数组运算
arr = np.array([1, 2, 3, 4, 5])
print(arr * 2) # 向量化运算,不用写循环
看到输出结果了吗?这就是金融数据最基本的形态。后面我们会用Pandas处理真实的股票日线数据,那才是真正有意思的地方。
2.4 金融数据API接口入门
有了环境,有了工具,接下来就是数据从哪里来的问题。国内金融数据接口,我主要用两个:Tushare和AkShare。它们各有千秋。
Tushare:专业、稳定、有门槛
Tushare是老牌金融数据接口了。数据质量高,覆盖广,从股票、基金到期货、期权都有。但有个门槛——需要注册获取token,而且部分高级数据需要积分。
# 安装
pip install tushare
# 使用示例
import tushare as ts
# 设置token(需要先在tushare官网注册)
ts.set_token('你的token')
# 初始化pro接口
pro = ts.pro_api()
# 获取平安银行日线数据
df = pro.daily(ts_code='000001.SZ', start_date='20240101', end_date='20240131')
print(df.head())
注意:token相当于你的身份凭证。我曾经见过有人把token直接写在代码里,然后上传到GitHub公开仓库。结果第二天发现被刷了十几万次请求,积分直接扣光。所以token一定要妥善保管,建议用环境变量或者配置文件来管理。
AkShare:免费、开源、无需注册
AkShare是后来崛起的后起之秀。最大的优势是——完全免费,不需要注册,直接pip安装就能用。它通过爬取公开财经网站的数据来提供接口,数据源包括新浪、东方财富、腾讯等。
# 安装
pip install akshare
# 使用示例
import akshare as ak
# 获取A股实时行情
df = ak.stock_zh_a_spot_em()
print(df.head())
# 获取个股历史行情
df = ak.stock_zh_a_hist(symbol="000001", period="daily",
start_date="20240101", end_date="20240131")
print(df.head())
我的建议:如果是做个人研究、学习,AkShare完全够用。如果是做生产环境、需要稳定可靠的数据源,Tushare更合适。我自己的做法是——研究阶段用AkShare快速验证想法,正式策略用Tushare获取高质量数据。
两个接口的对比
| 特性 | Tushare | AkShare |
|---|---|---|
| 注册要求 | 需要注册获取token | 无需注册 |
| 数据质量 | 高,经过清洗校验 | 中等,依赖源网站 |
| 数据范围 | 股票、基金、期货、期权、宏观等 | 股票、基金、期货、宏观、另类数据 |
| 调用频率 | 有限制,积分越高限制越少 | 无明确限制,但建议合理使用 |
| 适合场景 | 生产环境、量化策略 | 学习研究、快速原型 |
嗯,到这里,你的金融数据环境就基本搭建好了。Anaconda管理环境,Jupyter写代码做分析,Pandas和NumPy处理数据,Tushare或AkShare获取数据。这套组合拳,足够应付绝大多数金融数据分析场景了。
我记得刚开始做金融数据清洗时,光是环境配置就折腾了一周。现在有了这些工具,新人半天就能上手。工具在进步,效率也在提升。但有一点没变——扎实的基础环境,永远是高效工作的前提。
公众号:蓝海资料掘金营,微信deep3321