Нахождение вероятности из разных столбцов данных - PullRequest
0 голосов
/ 23 сентября 2019

У меня есть датафрейм с колонками Winner, Sex_female и Sex_male.Три столбца заполнены целыми числами 0 и 1. Я хочу найти вероятность победителей женского и мужского пола.

Победитель: 0 = не победитель 1 = победитель

Sex_female: 0 = не женщина 1 = женщина

Sex_male: 0 = не мужчина 1 = мужчина

Это код, который я пробовал до сих пор:

def female_survival(dframe):
    female_survived = 0
    for i in dframe:
        if (dframe["Sex_female"] == 1) & (dframe["Survived"] == 1):
            female_survived += 1
        else:
            female_survived += 0

Возвращает ошибку ValueError: Истинное значение Series является неоднозначным.Используйте a.empty, a.bool (), a.item (), a.any () или a.all ().

Ответы [ 2 ]

0 голосов
/ 24 сентября 2019

Надеюсь, это поможет:

        #creating a dummy dataframe
        df=pandas.DataFrame(numpy.array([[1,0,0,0,1,1,0,1,0,1],[1,1,0,0,0,1,1,0,1,1],[0,0,1,1,1,0,0,1,0,0]]).transpose(),columns=['Winner','Sex_female','Sex_male'])


        Output:
                Winner  Sex_female  Sex_male
            0   1   1   0
            1   0   1   0
            2   0   0   1
            3   0   0   1
            4   1   0   1
            5   1   1   0
            6   0   1   0
            7   1   0   1
            8   0   1   0
            9   1   1   0

     #Find the number of females who survived and how many did not
     df[df['Sex_female']==1]['Winner'].value_counts() 


    Output:
        1    3
        0    3

Вместо df[df['Sex_female']==1]['Winner'].mean() даст процент выживших женщин

0 голосов
/ 23 сентября 2019

Вы не должны зацикливаться на кадре данных, как вы делали выше, лучше будет:

for i in range(dframe.shape[0]):
        if (dframe.iloc[i]["Sex_female"] == 1) & (dframe.iloc[i]["Survived"] == 1):
            female_survived += 1
        else:
            female_survived += 0

Вы также можете использовать здесь функцию value_counts() вместо циклов.

...