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

解析奥运金牌统计Python代码中使用numpy.isfinite的原因

代码中numpy.isfinite函数的使用原因解析

前置逻辑:代码前序处理产生的异常值场景

先理清楚代码前几步的实际运行效果:

  • 代码中两次调用的copy_df.where(),并不会直接删除不满足条件的行:它的逻辑是保留满足判断条件的原有值,不满足条件的整行所有字段都会被赋值为NaN空值。
  • 后续依次计算夏冬金牌差Diff、金牌数占比Gold_Ratio的过程中,这些被置空的行会参与运算,最终产出两种无法参与有效计算的非有限值:
    1. 空值NaN:只要行被置空,分子分母都为NaN时,除法结果自然也是NaN
    2. 带符号的无穷值inf/-inf:若某行未被完全置空,但金牌总数Gold + Gold.1计算结果为0,做除法时就会触发除零,产生无穷值

np.isfinite的核心作用

np.isfinite是一个元素级判断函数,会对输入的每个值做校验,仅当值为有限的普通实数时返回True,其余情况全部返回False。

它在这里的核心用途,就是对Gold_Ratio列做行过滤:

  • 直接筛除所有被where操作置空的无效行(也就是不满足「夏奥冬奥都至少拿1金」的国家行)
  • 自动排除所有除零产生的无穷值,避免后续计算最大值时,把无意义的无穷值当成结果
  • 相比单纯用dropna()过滤空值,np.isfinite可以同时识别并排除NaN、正无穷、负无穷三类异常值,过滤覆盖的场景更全
  • 最终留下的数据集,刚好完全匹配业务需求:所有纳入计算的国家,都是夏奥、冬奥金牌数都大于0、占比值为有效有限实数的样本

如果去掉这一步过滤,后续调用max()求最大占比时,要么返回NaN,要么返回没有实际意义的无穷值,根本得不到正确的国家结果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.26 04:36:03