You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python通过Yahoo Finance获取多只股票指定时段的高低股价

批量获取指定时段股票高低价并导出Excel

基础遍历实现(基于你现有代码扩展)

你可以通过遍历ticker_list数组,逐个获取每只股票的数据并计算高低价,最后整理成表格导出Excel。以下是完整代码:

import pandas as pd
from yahoo_fin.stock_info import get_data

ticker_list = ['MSFT', 'AMZN', 'META']
start_date = "2024/01/22"
end_date = "2024/05/20"

# 存储结果的列表
results = []

for ticker in ticker_list:
    # 获取单只股票数据
    stock_data = get_data(
        ticker,
        start_date=start_date,
        end_date=end_date,
        index_as_date=True,
        interval="1mo"
    )
    # 计算时段内的最低/最高价
    min_price = stock_data['low'].min()
    max_price = stock_data['high'].max()
    # 将结果存入列表
    results.append({
        '股票代码(Ticker)': ticker,
        '最低价(Minimum)': round(min_price, 2),  # 保留两位小数匹配示例格式
        '最高价(Maximum)': round(max_price, 2)
    })

# 转换为DataFrame并导出Excel
result_df = pd.DataFrame(results)
result_df.to_excel('股票高低价统计.xlsx', index=False)

更优实现方案(批量请求提升效率)

循环逐个请求股票数据会产生多次API调用,股票数量较多时效率较低。可以使用yfinance直接批量下载所有股票数据,一次性完成计算:

import pandas as pd
import yfinance as yf

ticker_list = ['MSFT', 'AMZN', 'META']
start_date = "2024/01/22"
end_date = "2024/05/20"

# 批量下载所有股票的月度数据
batch_data = yf.download(
    ticker_list,
    start=start_date,
    end=end_date,
    interval="1mo"
)

# 提取高低价并计算每只股票的极值
min_prices = batch_data['Low'].min().round(2)
max_prices = batch_data['High'].max().round(2)

# 整理成目标格式的DataFrame
result_df = pd.DataFrame({
    '股票代码(Ticker)': min_prices.index,
    '最低价(Minimum)': min_prices.values,
    '最高价(Maximum)': max_prices.values
})

# 导出Excel
result_df.to_excel('股票高低价统计.xlsx', index=False)

说明

  1. 两种方案最终都会生成你需要格式的Excel文件,round(2)用于匹配示例中的小数位数,可根据需求调整。
  2. 批量请求方案减少了网络请求次数,股票数量越多速度优势越明显,代码也更简洁。
  3. 确保已安装依赖:pip install pandas yahoo_fin yfinance

内容的提问来源于stack exchange,提问作者pcloud 111055

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 15:47:37