python 传递布尔运算符并使用泰坦尼克号数据集预测生存平均值的函数

python function to pass the boolean operators and predict the survival mean with titanic dataset

我正在尝试预测测试中乘客的生存机会 set.i 在不使用该函数的情况下成功预测了值。

数据集如下

f = pd.read_csv('https://raw.githubusercontent.com/Explore-AI/Public-Data/master/Data/regression_sprint/titanic_train_raw.csv')
df_clean = pd.read_csv('https://raw.githubusercontent.com/Explore-AI/Public-Data/master/Data/regression_sprint/titanic_train_clean_raw.csv')

如果通过函数传递值,则预期结果如下

survival_likelihood(df_clean,"Pclass","==","3") == 0.24
survival_likelihood(df_clean,"Age","<","15") == 0.58

我无需按照下图编写函数即可获得输出

我已经编写了以下函数,如果通过函数传递值,我将无法获得所需的结果

 def survival_likelihood(df_clean, column_name, boolean_operator, value):
            column_name = df_clean.columns
            value = df[column_name]
            boolean_operator = [">" or "<" or "=="]
            if column_name in df_clean.columns and df_clean[column_name].dtypes != object :
                s = round(df_clean[df[column_name][boolean_operator][value]].Survived.mean(), 
            return s

已尝试过 eval() 方法,但也无济于事。期待同样的 pointer/fix。提前致谢。

此致, 普拉卡什

下面的一个可以达到我想要的效果

 def survival_likelihood(df_clean,column_name, boolean_operator, value):
        if  boolean_operator == '<':
            s =  df_clean[df_clean[column_name]  < eval(value)] ['Survived'].mean()
            #print(boolean_operator)
        if  boolean_operator == '>':
            s =  df_clean[df_clean[column_name]  < eval(value)] ['Survived'].mean()
            #print(boolean_operator)
        if  boolean_operator == '==':
            s =  df_clean[df_clean[column_name]  == eval(value)] ['Survived'].mean()
        return s