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

Google Sheets/Excel/Python实现每行非零列求和及PGA赛事关联分析

PGA赛事相关性分析解决方案(基于共同进前30球员数)

Google Sheets 实现

单赛事对计算

如果要计算赛事A(列B)和赛事B(列C)的共同进前30球员数,直接用:

=SUMPRODUCT(--(B2:B101>0), --(C2:C101>0))

--用于把布尔值转成0/1,SUMPRODUCT会逐行相乘后求和,得到同时在两个赛事有非零完赛次数的球员总数。

批量生成相关性矩阵

如果要一次性生成所有赛事对的结果,用ArrayFormula结合MMULT:
假设赛事列从B到CV(共200列),球员行是2到101(共100行),把公式放在空白区域的左上角(比如B103):

=ArrayFormula(MMULT(--(B2:CV101>0), TRANSPOSE(--(B2:CV101>0))))

这个公式会把非零值转成1矩阵,转置后做矩阵乘法,结果矩阵的每个单元格就是对应赛事对的共同非零球员数。

Excel 实现

单赛事对计算

和Google Sheets逻辑一致,公式:

=SUMPRODUCT(--(A2:A101>0), --(B2:B101>0))

批量生成相关性矩阵

Excel 365/2021支持动态数组,直接用:

=MMULT(--(B2:CV101>0), TRANSPOSE(--(B2:CV101>0)))

旧版Excel需要选中200x200的结果区域,输入公式后按Ctrl+Shift+Enter作为数组公式执行。

Python 实现(用Pandas)

适合处理大表格,还能快速可视化结果:

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# 读取数据(替换成你的文件路径,假设第一列是球员姓名)
df = pd.read_csv("pga_player_data.csv", index_col="Player_Name")

# 把数据转成布尔矩阵:非零值标记为True(代表进过前30)
bool_matrix = df > 0

# 计算赛事间共同进前30的球员数:矩阵转置后点积
common_player_matrix = bool_matrix.T.dot(bool_matrix)

# 用热图可视化相关性(可选)
plt.figure(figsize=(18, 15))
sns.heatmap(common_player_matrix, cmap="YlGnBu", fmt="d", cbar_kws={"label": "共同进前30球员数"})
plt.title("PGA赛事相关性矩阵(基于共同进前30球员数)")
plt.xticks(rotation=45)
plt.yticks(rotation=0)
plt.tight_layout()
plt.show()

其他赛事关联分析思路

  • Jaccard相似度修正:用共同球员数 / 至少在一个赛事进前30的球员数,消除不同赛事参赛规模的影响,更公平对比相关性。
  • 排名相关性:计算球员在两个赛事的排名之间的斯皮尔曼相关系数,衡量赛事难度或球员表现的一致性。
  • 赛事聚类:用K-means或层次聚类把相关性高的赛事分组,发现赛事的类型特征(比如大满贯/常规美巡赛的聚类差异)。
  • 参赛球员重合度分布:分析单个球员跨赛事进前30的次数分布,找出“全能型”球员,反过来辅助赛事相关性验证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 20:54:30