Python体育数据处理:基于列最大值计算各列相对百分位数
体育数据列值的百分占比转换与新列生成
实现思路
针对数据中的每一列数值型数据,以该列最大值为100%基准,计算每行数值的百分占比,最终生成格式为「统计值/百分占比%」的新列。
代码实现(基于Pandas)
import pandas as pd # 模拟体育数据集(可替换为你的真实数据) data = { 'xg': [0.25, 0.82, 1.03, 0.51, 0.33], 'shots': [3, 8, 12, 5, 4], 'possession': [42, 65, 58, 49, 53] } df = pd.DataFrame(data) # 遍历所有数值列,生成带百分占比的新列 for col in df.select_dtypes(include=['number']).columns: col_max = df[col].max() # 生成「原数值/百分占比」格式的内容,占比保留两位小数 df[f"{col}_with_percent"] = df[col].apply(lambda x: f"{x}/{round((x / col_max) * 100, 2)}%") # 查看处理后的数据 print(df)
关键说明
select_dtypes(include=['number']):自动筛选所有数值型列,避免处理非数值列(如字符串类型的球队名)- 百分占比计算逻辑:
(当前值 / 列最大值) * 100,用round()控制小数位数 - 新列命名规则为「原列名_with_percent」,可根据需求自行修改
- 若只需处理特定列,将循环对象改为指定列列表即可,例如:
for col in ['xg', 'shots']:
内容的提问来源于stack exchange,提问作者Bruno Queiroz
相关产品推荐
相关产品推荐

