Pandas:使用带有变量的 groupby 估算描述性统计数据

艾卡达维德

我有一个这样的数据框:

input_df = pd.DataFrame({"sex": ["M", "F", "F", "M", "M"], "Class": [1, 2, 2, 1, 1], "Age":[40, 30, 30, 50, NaN]})

我想要做的是根据性别和类别列估算年龄的缺失值。我试过用一个函数来做,conditional_impute。该函数所做的是获取一个数据框和一个条件,然后使用它根据性别和类别分组来估算年龄。但需要注意的是,条件可以是平均值或中值,如果不是这两者中的任何一个,函数必须引发错误。所以我这样做了:

### START FUNCTION
def conditional_impute(input_df, choice='median'):
    my_df = input_df.copy()
    # if choice is not median or mean, raise valueerror
    if choice == "mean" or choice == "median":
        my_df['Age'] = my_df['Age'].fillna(my_df.groupby(["Sex","Pclass"])['Age'].transform(choice))
    else:
        raise ValueError()    
    # round the values in Age colum
    my_df['Age'] = round(my_df['Age'], 1)
    return my_df
### END FUNCTION

但是当我调用它时出现错误。

conditional_impute(train_df, choice='mean')

我可能做错了什么?我真的无法解决这个问题。

BeRT2me

如果您提供正确的输入,它的输出就很好...

# Fixed input to match function:
df = pd.DataFrame({"Sex": ["M", "F", "F", "M", "M"], "Pclass": [1, 2, 2, 1, 1], "Age":[40, 30, 30, 50, np.nan]})

def conditional_impute(input_df, choice='median'):
    my_df = input_df.copy()
    # if choice is not median or mean, raise valueerror
    if choice == "mean" or choice == "median":
        my_df['Age'] = my_df['Age'].fillna(my_df.groupby(["Sex","Pclass"])['Age'].transform(choice))
    else:
        raise ValueError()    
    # round the values in Age colum
    my_df['Age'] = round(my_df['Age'], 1)
    return my_df

conditional_impute(df, choice='mean')

输出:

  Sex  Pclass   Age
0   M       1  40.0
1   F       2  30.0
2   F       2  30.0
3   M       1  50.0
4   M       1  45.0

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

R:在 Shiny 中使用公式对象来检索描述性统计数据

测试均值相等的假设。使用PROC MEANS生成四组的描述性统计数据

显示 datasummary 中唯一值的计数,并使用数据组合两个不同的描述性统计表

熊猫的groupby统计数据中的NaN值

Python Pandas中类别变量的描述性统计

使用 Stream API 统计数据

Python中的描述性统计信息/带有圆括号的Pandas

按组描述性统计多个变量

两个类别变量(熊猫)的描述性统计

R:表描述性统计量:3 个变量

带熊猫的箱线图,groupby,子绘图,计算/描述性统计,汇总

在活动记录上使用描述性统计信息gem

在R中使用描述性统计信息创建表

在R中使用描述性统计信息创建表

清理数据集,但在描述性统计信息中,有关已删除数据的信息仍然保留

带有groupby的pandas数据框滚动窗口

统计数据框中的150个变量

统计数据和全局变量

使用省略号作为输入变量时向函数添加描述性统计信息

使用统计数据计算标准差

在nix上使用ESS(Emacs会说统计数据)

使用pandas groupby计数值

使用 Pandas 沿文本文件行进行描述性统计

有没有一种方法可以使用MLflow记录数据集的描述性统计信息?

使用groupby和mean()在Pandas中保留带有分类变量的列

如何计算 R 中数值和分类变量的描述性统计量?

使用Pandas groupby合并数据

带有布尔OR的Pandas groupby

是否有可能做你自己的高效描述性统计功能?- R