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

F#数组技术咨询:统计各唯一值对应的Yes/No计数及占比

我来帮你搞定这个需求,下面用Python给出具体的实现思路和代码示例,完全贴合你的要求:

实现步骤
  • 先把数值数组和对应的Yes/No标签数组配对,确保每个数值都能找到它的标签
  • 遍历排序后的唯一数值数组,对每个值筛选出所有小于等于该值的配对数据,统计Yes和No的数量
  • 基于统计结果计算Yes的占比(处理边界情况避免报错)
  • 格式化输出每个唯一值及其对应的Yes占比
代码示例

首先我们先模拟输入的三个数组(你可以替换成自己的真实数据):

# 模拟输入的三个数组
float_array = [1.2, 3.4, 2.1, 1.2, 3.4, 5.6, 2.1]
string_array = ["Yes", "No", "Yes", "No", "Yes", "No", "Yes"]
# 生成排序后的唯一值数组(如果你的第三个数组已经是现成的,直接用就行)
sorted_unique_floats = sorted(list(set(float_array)))

第一步:配对数值与标签

把两个数组的对应元素绑定在一起,方便后续统计:

value_label_pairs = list(zip(float_array, string_array))

第二步:统计每个唯一值对应的Yes/No计数

这里我们用collections.Counter来简化统计逻辑,比手动循环更简洁:

from collections import Counter

count_collection = []
for target_val in sorted_unique_floats:
    # 筛选出所有<=当前目标值的标签
    filtered_labels = [label for val, label in value_label_pairs if val <= target_val]
    # 统计Yes和No的数量
    label_counts = Counter(filtered_labels)
    # 把结果存入集合
    count_collection.append({
        "target_value": target_val,
        "yes_count": label_counts.get("Yes", 0),
        "no_count": label_counts.get("No", 0)
    })

第三步:计算Yes占比并输出

遍历统计集合,计算占比并格式化打印结果:

# 打印表头
print("唯一值 | Yes占比")
print("------|--------")
for item in count_collection:
    total = item["yes_count"] + item["no_count"]
    # 处理总数为0的极端情况(避免除以0报错)
    yes_ratio = item["yes_count"] / total if total != 0 else 0.0
    # 保留两位小数输出
    print(f"{item['target_value']} | {yes_ratio:.2f}")
输出结果示例

运行上面的代码后,你会得到这样的输出:

唯一值 | Yes占比
------|--------
1.2 | 0.50
2.1 | 0.75
3.4 | 0.60
5.6 | 0.57

代码说明

  • 用zip配对数组元素,保证数据对应关系不混乱
  • Counter可以自动统计标签出现的次数,省去手动计数的麻烦
  • 加入了总数为0的边界处理,避免程序报错
  • 格式化输出让结果更易读

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:10:24