如何使用YahooQuery筛选季度财报数据并导出至Excel?
解决方法
先搞懂返回数据的结构
yahooquery的earnings方法返回嵌套字典,你要的季度财报数据藏在[股票代码]['financialsChart']['quarterly']路径下,每个条目包含季度日期、营收、利润等核心字段。
筛选特定季度数据
直接匹配季度的日期字符串(比如'Q2 2024')即可完成筛选,代码示例:
import yahooquery import pandas as pd # 单公司筛选示例 ticker = yahooquery.Ticker('AAPL', asynchronous=True) earnings = ticker.earnings # 提取该公司所有季度数据 quarterly_list = earnings['AAPL']['financialsChart']['quarterly'] # 筛选目标季度(以2024年第二季度为例) target_quarter = 'Q2 2024' filtered_data = [item for item in quarterly_list if item['date'] == target_quarter] print(filtered_data)
批量处理多公司
要查询多个公司的话,直接把股票代码列表传给Ticker,遍历处理即可:
# 多公司批量筛选示例 ticker_list = ['AAPL', 'MSFT', 'GOOGL'] tickers = yahooquery.Ticker(ticker_list, asynchronous=True) all_earnings_data = tickers.earnings # 统一存储所有筛选后的结果 final_result = [] target_quarter = 'Q2 2024' for symbol, data in all_earnings_data.items(): quarters = data['financialsChart']['quarterly'] # 找到目标季度并添加股票代码标识 for q in quarters: if q['date'] == target_quarter: q['ticker'] = symbol final_result.append(q)
导出到Excel表格
用pandas把筛选后的数据转换成表格格式,直接导出到Excel:
# 转换为DataFrame格式 df = pd.DataFrame(final_result) # 导出Excel,index=False去掉默认行号 df.to_excel('季度财报筛选结果.xlsx', index=False)
额外提示
- 如果需要按日期范围筛选(比如最近3个季度),可以把
date字段转换为日期对象后做范围判断 - 若异步请求出现异常,可将
asynchronous=True改为False
内容的提问来源于stack exchange,提问作者Simran Aswani
相关产品推荐
相关产品推荐

