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

如何统计Steam数据集中每个steamid的好友数量?

解决方案

针对你的Steam好友数据集统计需求,以下是基于命令行工具的高效处理方案,适配3200万条数据的规模:

前提说明

首先需要处理数据中的两个问题:

  1. 部分steamid/steamid_b带有*符号,需先清理
  2. 存在大量重复的好友关系记录,需去重后统计

方案1:仅统计用户作为steamid时的唯一好友数

(即只计算该用户主动关联的好友,忽略其他用户将其加为好友的情况)

# 替换your_data.csv为你的数据集文件名
sed '1d' your_data.csv | sed 's/\*//g' | sort -t' ' -k1,1 -k2,2 -u | awk '{count[$1]++} END {for (id in count) print id, count[id]}'

步骤解释:

  1. sed '1d' your_data.csv:删除表头行
  2. sed 's/\*//g':清除所有*符号,统一steamid格式
  3. sort -t' ' -k1,1 -k2,2 -u:以空格为分隔符,按steamid和steamid_b排序并去重,保留唯一的好友关系对
  4. awk '{count[$1]++} END {for (id in count) print id, count[id]}':统计每个steamid对应的唯一好友数量

方案2:统计用户的所有关联好友(双向关系)

(即同时计算该用户主动关联的好友,以及将该用户加为好友的用户,对应你例子中76561197960265733的好友数为2的需求)

# 替换your_data.csv为你的数据集文件名
sed '1d' your_data.csv | sed 's/\*//g' | awk '{print $1, $2; print $2, $1}' | sort -t' ' -k1,1 -k2,2 -u | awk '{count[$1]++} END {for (id in count) print id, count[id]}'

步骤解释:

  1. 前两步同方案1,处理表头和清理符号
  2. awk '{print $1, $2; print $2, $1}':将每条单向好友关系拆分为双向记录(如a b拆为a b和b a),确保双方都能统计到彼此
  3. sort -t' ' -k1,1 -k2,2 -u:对双向记录去重,避免重复统计同一对好友
  4. 最后用awk统计每个用户的唯一好友总数

性能优化建议(针对3200万条数据)

  • 排序时指定内存:使用sort -S 16G(根据你的机器内存调整,内存越大排序速度越快)
  • 若数据用制表符分隔,将-t' '改为-t$'\t'
  • 可加入pv命令查看处理进度:sed '1d' your_data.csv | pv | sed 's/\*//g' | ...
  • GNU sort默认支持多线程,无需额外配置即可利用多核资源

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 01:40:25