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

如何统计Pandas DataFrame评论内容中提及频次Top3的股票ticker

统计Reddit评论中股票ticker提及Top3的实现方案

核心实现用正则做全词匹配+计数器统计,不需要额外安装第三方库,运行效率高,还能避免普通单词误匹配成ticker的问题。

前置依赖

用到的都是Python数据处理的常规工具,不需要额外装包:

  • pandas(已用于存储两份数据集)
  • 标准库re(正则匹配)
  • 标准库collections.Counter(频次统计)

具体实现步骤

1. 构建精准的ticker匹配规则

首先从存储ticker的DataFrame中提取所有有效股票代码,统一转大写(适配Reddit用户提及股票代码的书写习惯,同时兼容大小写混写的场景),再通过正则词边界做全词匹配,避免出现「ticker是A,匹配到Apple里的A」这类误判。

import re
from collections import Counter

# 提取所有非空ticker,去重、统一转大写
all_tickers = ticker_df["ticker_symbols"].dropna().str.upper().unique()
# 生成正则匹配模式:\b代表词边界,re.escape处理ticker里的点、横杠等特殊字符
ticker_pattern = re.compile(
    r"\b(" + "|".join(re.escape(ticker) for ticker in all_tickers) + r")\b"
)

2. 遍历评论统计ticker提及频次

遍历评论DataFrame的comm.body字段,每条评论先统一转大写,再用上面的正则提取所有命中的ticker,累计计数即可。评论量在百万级以内时,这个方法的运行速度完全够用。

# 初始化计数器
mention_counter = Counter()

for content in comments_df["comm.body"].dropna().astype(str):
    # 可选:先清洗评论里的干扰内容,比如链接、@用户名,提升匹配准确率
    cleaned_content = re.sub(r"https?://\S+|@\w+", "", content)
    # 统一转大写后匹配所有ticker
    hit_tickers = ticker_pattern.findall(cleaned_content.upper())
    # 更新计数
    mention_counter.update(hit_tickers)

3. 输出提及次数Top3的ticker

直接调用计数器的most_common方法就能拿到排序后的结果,返回格式为(ticker符号, 提及次数)的元组列表:

top3 = mention_counter.most_common(3)

# 打印结果
for ticker, cnt in top3:
    print(f"股票代码 {ticker},累计被提及 {cnt} 次")

优化提示

  • 如果ticker列表里存在长度过短的符号(比如单字母A、T),可以在构建ticker列表的时候加一层过滤,比如只保留长度≥2的ticker,能进一步降低误判率
  • 如果要区分ticker是在正文还是引用内容里,可以提前把评论里的引用块(以>开头的行)过滤掉再匹配,统计结果会更准确

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 05:00:49