как использовать pandas для подсчета появления указанного c текста в Excel - PullRequest
0 голосов
/ 07 мая 2020

здесь впервые, только начал учиться программировать, я провожу клиническое исследование некоторых факторов риска заболевания, здесь я уже получил множество данных о пациентах. Цель кода - подсчитать количество факторов риска (ожирение, гипертония, диабет, гиперлипидемия) у каждого пациента (каждая строка) и распечатать результат в новом столбце, а на последнем шаге подсчитать количество, сколько Всего у пациентов 4 фактора риска, а у скольких из них 3, 2 и только один или ни одного.

ну, попробуйте эту часть в python, просто придумал, и я попробовал следующий код:

import pandas as pd
df1=pd.DataFrame({'gender':['male','male','female','female','male'],'age':[49,60,65,20,65],
                  'obesity':['yes','yes','NaN','NaN','yes'],
                  'hypertension':['yes','yes','yes','NaN','yes'],
                  'diabetes':['NaN','yes','NaN','NaN','yes'],
                  'hyperlipidemia':['yes','yes','yes','NaN','NaN']})
factor_count=[] #to be written in the very right column
row=0
column=3
while row<=5:             #5 rows in total for this example
    count=0               #to count the risk factors of each row
    while column<=5:
        if df.iloc[row,column] == 'yes':         #probably my while loop is really stupid
            count+=1
            column+=1
    factor_count.append(count)
    row+=1
print(factor_count)

ну, после того, как я нажму «запустить», ядро ​​никогда останавливается, я только что научился программировать самостоятельно, поэтому я понятия не имею, что произошло, поэтому мне пришлось остановить ядро. Кто-нибудь может мне с этим помочь?

1 Ответ

0 голосов
/ 07 мая 2020

Вы можете заменить «да» во фрейме данных на 1, а затем использовать метод sum:

df1.replace('yes',1,inplace=True)
df1.iloc[:,[2,3,4,5]] = df1.iloc[:,[2,3,4,5]].astype(float)
df1["Numbers of factor"] = df1.iloc[:,[2,3,4,5]].sum(axis=1)

Тогда гистограмма этого столбца должна показывать, сколько пациентов имеют 1,2 3 ... риск

df1["Numbers of factor"].hist()
...