使用Pandas计算一列值达到另一列目标值的记录占比
Pandas计算认捐达标记录占比实现方法
核心计算逻辑非常简单,利用Pandas的向量化运算即可快速完成,哪怕是6万行数据也能秒出结果,不需要写循环:
- 逐行匹配判断实际认捐金额是否大于等于目标金额,生成布尔值序列(达标为
True,未达标为False) - 对布尔序列求均值——Pandas数值运算时会自动把
True转成1、False转成0,均值结果就是达标记录数/总记录数的小数占比 - 乘以100即可得到百分比数值
完整代码示例
import pandas as pd # -------------------------- # 此处替换为你自己的数据集读取代码,比如pd.read_csv()等 # 以下是样例数据构造代码 df = pd.DataFrame({ "Goal": [9371, 700, 20000], "Pledged": [232, 745, 137] }) # -------------------------- # 可选:如果数据集存在Goal或Pledged为空的行,先执行这行删除空值避免统计偏差 # df = df.dropna(subset=["Goal", "Pledged"]) # 计算达标百分比 pass_rate = (df["Pledged"] >= df["Goal"]).mean() * 100 # 输出结果,:.2f表示保留2位小数,可按需调整 print(f"认捐达标的记录占总记录的{pass_rate:.2f}%")
样例运行结果
针对给出的3条样例数据,只有第二条Pledged=745 >= Goal=700达标,运行后输出结果为:
认捐达标的记录占总记录的33.33%
6000行的正式数据集直接套用这段代码即可,不需要做额外调整。
内容的提问来源于stack exchange,提问作者John Williams
相关产品推荐
相关产品推荐

