1.2 第一次获取数据
你现在有了一个能跑代码的环境。下一步——让真实的股票数据出现在你的屏幕上。一行代码就能下载苹果、谷歌、标普500十年数据。
一句话
yfinance 把雅虎财经的全球股票数据拉到你的 Python 里,一行代码搞定。
学习目标
学完本章你能:
- 用
yfinance下载任意股票的历史数据 - 理解 OHLCV 五列数据的含义
- 用
head()和tail()快速预览数据
核心内容
1. 导入 yfinance
在 Jupyter 的新单元格里输入:
import yfinance as yf按 Shift + Enter 运行。没有报错就说明装好了。
导入库(
import)就像是告诉 Python:「我要用工具箱里的某个工具了。」
2. 下载第一份数据
让我们下载标普 500 ETF(SPY)的数据,从 2024 年 1 月 1 日开始:
data = yf.download("SPY", start="2024-01-01")运行后稍等几秒。你会看到类似这样的进度提示:
[*********************100%***********************]现在 data 变量里存着 SPY 从 2024 年到现在每一天的价格数据。
3. 看看数据长什么样
data.head()head() 显示前 5 行。你应该会看到类似这样的表格:
| Date | Open | High | Low | Close | Volume | Adj Close |
|---|---|---|---|---|---|---|
| 2024-01-02 | 474.52 | 477.98 | 472.45 | 477.92 | ... | 477.92 |
| 2024-01-03 | 477.82 | 477.97 | 473.74 | 474.86 | ... | 474.86 |
再看看最近几天的数据:
data.tail()tail() 显示最后 5 行——也就是最近几天的数据。每天你跑这段代码,结果都会更新。
看看数据有多大规模:
print(f"共 {len(data)} 个交易日")SPY 从 2024 年初到现在,大概有 300-400 行数据——每一天是一行。
4. OHLCV —— 每天的价格"故事"
每一行代表一个交易日。每一列代表这个交易日的不同价格信息:
| 列名 | 含义 | 一句话解释 |
|---|---|---|
| Open | 开盘价 | 当天第一笔交易的价格 |
| High | 最高价 | 当天最高到过多少钱 |
| Low | 最低价 | 当天最低到过多少钱 |
| Close | 收盘价 | 当天最后一笔交易的价格 |
| Volume | 成交量 | 当天一共成交了多少股 |
| Adj Close | 复权收盘价 | 调整了分红/拆股后的真实价格 |
最重要的两列:Close 和 Volume。 收盘价决定了你是赚是亏,成交量决定了市场的参与热度。
📌 O-H-L-C-V 是全世界金融数据的通用语言。不管你以后用 Bloomberg、Wind、Tushare 还是任何数据源,看到的都是这个结构。
5. 试试其他股票
把 SPY 换成你感兴趣的公司:
# 苹果
aapl = yf.download("AAPL", start="2024-01-01")
aapl.head()# 特斯拉
tsla = yf.download("TSLA", start="2024-01-01")
tsla.head()# 比特币 ETF
btc = yf.download("BTC-USD", start="2024-01-01")
btc.head()每段代码都是一个独立的数据集。试着在你感兴趣的股票上运行——看看它们每天的价格变化。
练习
选择题
yfinance是干什么用的?- A. 画 K 线图
- B. 下载股票数据
- C. 做机器学习
- D. 算数学公式
OHLCV 中的 C 代表什么?
- A. 开盘价(Open)
- B. 最高价(High)
- C. 收盘价(Close)
- D. 成交量(Volume)
data.head()显示数据的哪一部分?- A. 最后几行
- B. 随机几行
- C. 前几行
- D. 中间几行
编程题
题目: 下载你最喜欢的公司(或你投资的股票)从 2024 年 1 月 1 日至今的数据,用 head() 和 tail() 查看,并打印总共有多少个交易日。
import yfinance as yf
# 把 'YOUR_TICKER' 换成你选的股票代码
ticker = 'YOUR_TICKER'
data = yf.download(ticker, start="2024-01-01")
# 你的代码:打印前5行、后5行、总行数💡 不知道代码?试试
AAPL(苹果)、GOOGL(谷歌)、AMZN(亚马逊)、MSFT(微软)、600519.SS(贵州茅台)。
论述题
假设有人问你在量化投资中「每天的价格数据包含什么」,你会怎么用一句话解释?再想一想,开盘价和收盘价不一样意味着什么?(比如 Open=100, Close=105 和 Open=100, Close=95 分别代表什么?)