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

如何基于字典中列表值计算符合灵活性标准的占比

解决方案

方法一:基于你现有字典代码的扩展

首先修正你的percentages函数,让它返回构建好的字典,然后添加逻辑计算灵活性百分比:

import pandas as pd

def course_prereq_flexibility(fn):
    df = pd.read_csv(fn)
    df2 = df[["area", "prereq_type"]].copy()
    # 获取分组后的字典
    dict1 = percentages(df2)
    
    # 计算每个键的灵活性百分比
    result_dict = {}
    for key, values_list in dict1.items():
        total_elements = len(values_list)
        # 统计符合灵活性标准的元素数量
        flexible_count = sum(1 for val in values_list if val in ('None', 'Flexible'))
        # 计算百分比
        percentage = flexible_count / total_elements
        # 格式化为保留两位小数的字符串
        result_dict[key] = f"{percentage:.2f}"
    
    return result_dict

def percentages(df2):
    dict1 = {}
    for items in range(len(df2)):
        key = df2.iloc[items, 0]
        values = df2.iloc[items, 1]
        dict1.setdefault(key, [])
        dict1[key].append(values)
    return dict1  # 添加返回语句

方法二:更高效的Pandas原生实现

直接利用Pandas的分组功能,避免手动构建字典,性能更优:

import pandas as pd

def course_prereq_flexibility(fn):
    df = pd.read_csv(fn)
    
    # 按area分组,计算每组中符合条件的元素占比
    flexibility_ratios = df.groupby('area')['prereq_type'].apply(
        lambda group: sum(group.isin(['None', 'Flexible'])) / len(group)
    )
    
    # 格式化为保留两位小数的字符串,并转换为字典
    result_dict = flexibility_ratios.apply(lambda x: f"{x:.2f}").to_dict()
    
    return result_dict

说明

  • 两种方法都会返回符合要求的字典,键为area名称,值为保留两位小数的百分比字符串。
  • 注意:你的示例输入中French的所有值都是'Hard',按要求计算应得到"0.00",但你给出的期望输出是"1.00",这可能是笔误。如果实际需求是统计'Hard'的占比,只需将判断条件改为val == 'Hard'即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 23:40:58