如何用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)
说明
- 两种方案最终都会生成你需要格式的Excel文件,
round(2)用于匹配示例中的小数位数,可根据需求调整。 - 批量请求方案减少了网络请求次数,股票数量越多速度优势越明显,代码也更简洁。
- 确保已安装依赖:
pip install pandas yahoo_fin yfinance
内容的提问来源于stack exchange,提问作者pcloud 111055
相关产品推荐
相关产品推荐

