用于计算pandas列中每个值的百分比的函数

时间:2017-04-05 09:10:00

标签: python pandas

我正在参加Kaggle的泰坦尼克号教程学习熊猫/机器学习。

这是我的内核:https://www.kaggle.com/trenzalore888/titanic/titanic-learning

我想创建一个带有两个参数的函数,dataframe和column name。我希望这个函数计算每个类的百分比(假设它是二进制的,即0或1)。

我可以做这个硬编码,即专门为泰坦尼克号设置,但我想创建一个功能,以便我将来可以使用它。

这是我失败的尝试:

traintotal=(len(train.index))
testtotal=(len(test.index))

def Is_data_imbalanced (df,objectivecolumn) :
    objectivecount= df.objectivecolumn[df.objectivecolumn > 0].sum()
    objectivecountpercentage=(objectivecount/traintotal)*100
    objectivecountrounded= np.ceil(objectivecountpercentage)
    return objectivecountrounded

Is_data_imbalanced(train,"Survived")

不幸的是我收到了一个属性错误:

  

AttributeError:'DataFrame'对象没有属性'objectivecolumn'

以下是有效的硬编码版本:

traintotal=(len(train.index))
print("there are", traintotal,"rows in the train data")

testtotal=(len(test.index))
print("there are {} rows in the test data".format(testtotal))

Survialcount= train.Survived[train.Survived > 0].sum()
Survialcountpercentage=(Survialcount/traintotal)*100
print(Survialcountpercentage)

survivalcountrounded= np.ceil(Survialcountpercentage)

print(" ",survivalcountrounded,"percent survived")

有谁知道如何让这个工作?好像火车需要df,但columnname的第二个参数.Survived无效。

1 个答案:

答案 0 :(得分:1)

假设它确实是二元的,那么你只需要

def Is_data_imbalanced(df, objectivecolumn):
    return int(df[objectivecolumn].mean() * 100)