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

从CSV读取股票代码,批量获取并写入对应估值指标

批量从CSV读取股票代码并获取PbRatio指标

原代码可正常运行,但仅支持手动输入股票代码获取asOfDate和PbRatio指标,现需处理约30万条股票代码,要求修改代码实现从CSV读取股票代码,批量获取对应指标并写入对应列。

原代码

import pandas as pd
from yahooquery import Ticker

symbols = ['MSFT','AAPL','GOOG']

header = ["asOfDate","PbRatio"]
           
for tick in symbols:
    faang = Ticker(tick)
    faang.valuation_measures
    df = faang.valuation_measures
    try:
        for column_name in header :
            if column_name  not in df.columns:
                df.loc[:,column_name  ] = None
        #Missing columns set to None.
        df = df[df['PbRatio'].notna()]
        df = df[df['asOfDate'] == df['asOfDate'].max()]
        df.to_csv('Output.csv', mode='a', index=True, header=False, columns=header)
    except AttributeError:
        continue

当前CSV文件样式

当前CSV文件样式

期望输出样式

期望输出样式

修改后的代码

import pandas as pd
from yahooquery import Ticker

# 读取包含股票代码的输入CSV(假设股票代码列名为'Symbol',可根据实际列名调整)
input_df = pd.read_csv('input.csv')
# 初始化要添加的指标列
input_df['asOfDate'] = None
input_df['PbRatio'] = None

# 分批处理股票代码,避免单次请求量过大触发API限制(每批100个,可按需调整)
batch_size = 100
symbols = input_df['Symbol'].dropna().tolist()

for i in range(0, len(symbols), batch_size):
    batch_symbols = symbols[i:i+batch_size]
    # 批量请求多只股票的估值数据
    tickers = Ticker(batch_symbols)
    val_measures = tickers.valuation_measures
    
    if val_measures is not None:
        # 筛选非空的PbRatio,并保留每只股票最新日期的数据
        latest_data = val_measures[val_measures['PbRatio'].notna()]
        latest_data = latest_data.loc[latest_data.groupby('symbol')['asOfDate'].idxmax()]
        
        # 将匹配的指标数据映射回原CSV对应行
        for _, row in latest_data.iterrows():
            symbol = row['symbol']
            input_df.loc[input_df['Symbol'] == symbol, 'asOfDate'] = row['asOfDate']
            input_df.loc[input_df['Symbol'] == symbol, 'PbRatio'] = row['PbRatio']

# 保存最终结果到输出CSV
input_df.to_csv('Output.csv', index=False)

关键说明

  • 用批量请求替代单循环遍历,大幅提升30万条数据的处理效率,同时规避频繁请求的API限制
  • 自动筛选每只股票最新日期的有效PbRatio数据,保证数据时效性
  • 直接在原CSV结构上新增指标列,完全匹配期望输出格式
  • 支持分批参数调整,可根据实际API限额修改batch_size值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 19:17:29