如何按狩猎名称分组并批量计算对应成功率的平均值?
批量计算各狩猎名称的平均成功率
推荐用Pandas实现(更简洁高效)
直接利用分组统计功能,一步到位:
import pandas as pd # 读取你的数据集(根据实际格式调整,比如CSV/Excel) df = pd.read_csv('hunt_data.csv') # 按狩猎名称分组,计算'% success'的平均值 avg_success_by_hunt = df.groupby('Species')['% success'].mean() # 查看结果 print(avg_success_by_hunt)
如果一定要用Numpy实现
需要手动处理分组筛选,示例代码如下:
import numpy as np import pandas as pd # 用Pandas读结构化数据更便捷,纯Numpy处理会繁琐很多 df = pd.read_csv('hunt_data.csv') # 获取所有唯一的狩猎名称 unique_species = np.unique(df['Species'].values) # 遍历计算每个名称的平均成功率 success_avg = {} for species in unique_species: # 筛选当前狩猎名称的所有记录 mask = df['Species'] == species success_values = df.loc[mask, '% success'].values # 计算均值并存入字典 success_avg[species] = np.mean(success_values) # 输出结果 for sp, avg in success_avg.items(): print(f"{sp}: {round(avg, 2)}%")
注:如果之前用Numpy失败,大概率是没处理好分组筛选的逻辑——Numpy本身没有内置的分组统计函数,需要手动遍历唯一值并筛选对应数据再计算均值,而Pandas的groupby是专门为这类场景设计的,更适合处理带分类标签的结构化数据。
内容的提问来源于stack exchange,提问作者Bryson Howard
相关产品推荐
相关产品推荐

