Skip to content

1.2 第一次获取数据

你现在有了一个能跑代码的环境。下一步——让真实的股票数据出现在你的屏幕上。一行代码就能下载苹果、谷歌、标普500十年数据。

一句话

yfinance 把雅虎财经的全球股票数据拉到你的 Python 里,一行代码搞定。

学习目标

学完本章你能:

  • yfinance 下载任意股票的历史数据
  • 理解 OHLCV 五列数据的含义
  • head()tail() 快速预览数据

核心内容

1. 导入 yfinance

在 Jupyter 的新单元格里输入:

python
import yfinance as yf

Shift + Enter 运行。没有报错就说明装好了。

导入库(import)就像是告诉 Python:「我要用工具箱里的某个工具了。」

2. 下载第一份数据

让我们下载标普 500 ETF(SPY)的数据,从 2024 年 1 月 1 日开始:

python
data = yf.download("SPY", start="2024-01-01")

运行后稍等几秒。你会看到类似这样的进度提示:

[*********************100%***********************]

现在 data 变量里存着 SPY 从 2024 年到现在每一天的价格数据。

3. 看看数据长什么样

python
data.head()

head() 显示前 5 行。你应该会看到类似这样的表格:

DateOpenHighLowCloseVolumeAdj Close
2024-01-02474.52477.98472.45477.92...477.92
2024-01-03477.82477.97473.74474.86...474.86

再看看最近几天的数据:

python
data.tail()

tail() 显示最后 5 行——也就是最近几天的数据。每天你跑这段代码,结果都会更新。

看看数据有多大规模:

python
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 换成你感兴趣的公司:

python
# 苹果
aapl = yf.download("AAPL", start="2024-01-01")
aapl.head()
python
# 特斯拉
tsla = yf.download("TSLA", start="2024-01-01")
tsla.head()
python
# 比特币 ETF
btc = yf.download("BTC-USD", start="2024-01-01")
btc.head()

每段代码都是一个独立的数据集。试着在你感兴趣的股票上运行——看看它们每天的价格变化。

练习

选择题

  1. yfinance 是干什么用的?

    • A. 画 K 线图
    • B. 下载股票数据
    • C. 做机器学习
    • D. 算数学公式
  2. OHLCV 中的 C 代表什么?

    • A. 开盘价(Open)
    • B. 最高价(High)
    • C. 收盘价(Close)
    • D. 成交量(Volume)
  3. data.head() 显示数据的哪一部分?

    • A. 最后几行
    • B. 随机几行
    • C. 前几行
    • D. 中间几行

编程题

题目: 下载你最喜欢的公司(或你投资的股票)从 2024 年 1 月 1 日至今的数据,用 head()tail() 查看,并打印总共有多少个交易日。

python
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 分别代表什么?)

📝 练习

💬 论述题

Built with VitePress