如何计算DataFrame中数值大于/小于特定值的占比?
计算DataFrame中满足数值条件的占比
问题场景
现有如下结构的单列DataFrame(Series):
df = 2018-06-15 0.096377 2018-06-18 0.095913 2018-06-19 0.073047 2018-06-20 0.065600 2018-06-21 0.063776 ...
需要查询其中数值大于/小于特定值的占比,例如查询大于0.07的数值占比,结果为0.50(即50%)。
解决方案
利用Pandas的布尔索引结合mean()方法直接计算占比:
- 计算大于特定值的占比:
# 以大于0.07为例 ratio_gt = (df > 0.07).mean() print(ratio_gt) # 示例中输出0.5 - 计算小于特定值的占比:
# 以小于0.065为例 ratio_lt = (df < 0.065).mean() print(ratio_lt)
原理说明
df > 0.07会生成一个布尔类型的Series,满足条件的元素为True(等价于数值1),不满足的为False(等价于数值0)。调用mean()方法时,会自动计算所有元素的平均值,也就是满足条件的元素占总元素的比例。
内容的提问来源于stack exchange,提问作者Ivan
相关产品推荐
相关产品推荐

