Python基于Pandas实现数据集双数据点调取对比及NBA球员1v1胜负判定
1v1球员对战判定功能实现方案
前置核对操作
- 运行原有基础代码后,先执行
print(df.columns.tolist())打印数据集全部列名,逐一确认三类信息:- 存储球员姓名的对应列名(常见字段如
player_name、球员) - 6项对比指标的实际列名:投篮命中率、命中三分数、场均篮板、场均抢断、场均封盖、场均得分
- 确认数据集不存在重复的同球员条目,避免调取错数据
- 存储球员姓名的对应列名(常见字段如
- 原有代码中导入的seaborn、matplotlib模块在本功能中无实际作用,可注释减少冗余。
可直接修改复用的代码
import pandas as pd # 原有数据读取逻辑 df = pd.read_csv("https://docs.google.com/spreadsheets/d/e/2PACX-1vSTbHMm7RQOxOj6yl17g7MLfCBFghAACUie0k3HLB_ja9E0t0HpENl4ydN4b58UdCCiBTB9rvj0zy-O/pub?output=csv") # 自动把统计指标列转成数值类型,避免字符串对比报错 df[["投篮命中率", "命中三分数", "场均篮板", "场均抢断", "场均封盖", "场均得分"]] = df[["投篮命中率", "命中三分数", "场均篮板", "场均抢断", "场均封盖", "场均得分"]].apply(pd.to_numeric, errors='coerce') # -------------------------- # 手动替换区:把下面的字段名换成你实际核对到的列名 player_name_col = "球员" compare_metrics = [ "投篮命中率", "命中三分数", "场均篮板", "场均抢断", "场均封盖", "场均得分" ] # -------------------------- def get_player_metric(player_name): # 匹配球员时统一转小写,去掉前后空格,避免格式差异导致匹配失败 match_result = df[df[player_name_col].str.lower() == player_name.strip().lower()] if match_result.empty: print(f"未在数据集中找到球员:{player_name},请检查拼写后重试") return None # 取第一条匹配到的统计记录 return match_result.iloc[0][compare_metrics] def judge_1v1_winner(first_player, second_player): first_metrics = get_player_metric(first_player) second_metrics = get_player_metric(second_player) if first_metrics is None or second_metrics is None: return first_win = 0 second_win = 0 for metric in compare_metrics: if first_metrics[metric] > second_metrics[metric]: first_win +=1 elif second_metrics[metric] > first_metrics[metric]: second_win +=1 print(f"\n逐指标对比结果:{first_player} 领先{first_win}项,{second_player} 领先{second_win}项") if first_win >=4: print(f"判定结论:{first_player} 是1v1对战的大概率胜方") elif second_win >=4: print(f"判定结论:{second_player} 是1v1对战的大概率胜方") else: print(f"判定结论:双方指标胜负差不足4项,势均力敌,无明确大概率胜方") # 交互式调用入口 if __name__ == "__main__": input_p1 = input("请输入第一位对战球员的姓名:") input_p2 = input("请输入第二位对战球员的姓名:") judge_1v1_winner(input_p1, input_p2)
常见问题排查
- 出现数字对比报错:确认已在数据读取后添加了数值类型转换的代码,将指标列从字符串格式转为可计算的数值格式
- 明明有球员却匹配失败:检查球员列名是否填写正确,确认姓名输入时没有多余的空格
- 同球员取到错误数据:提前过滤掉不需要的历史赛季、不同球队的重复球员记录,只保留目标时间段的统计值
内容的提问来源于stack exchange,提问作者Mike Williams
相关产品推荐
相关产品推荐

