计算每个变量的Nan并以百分比表示

时间:2020-03-10 17:18:32

标签: python pandas dataframe

我是python的新手,但尚未找到解决此挑战的方法。我每个医院的数据具有不同的变量。现在我确实要计算每个变量缺少的数据总量,并按百分比表示每个医院。以下是数据框的外观:

import pandas as pd
df = pd.DataFrame([('Jorh Hospital','2018-03-15', 389.0,34, 32, 34),
                   ('Jorh Hospital','2018-04-20', np.nan,22, 5, 43),
                   ('Bugh Hospital','2019-02-16', 80.5,np.nan, 56, np.nan),
                   ('Bugh Hospital','2019-06-23', np.nan,89, 67, np.nan)],
                  columns=('Hosp_name','date', 'max_rec', 'reg_pp', 'disch_no', 'temp_rec'))
df

现在,我们从不同的医院收集了变量,我想为每个医院的每个变量计算 NaNs 。我必须在决赛桌中将医院变成列,将变量变成行。这是我尝试过的事情:

df.isna().sum()

我无法从这里继续,这是我想要的最终结果。

dff = pd.DataFrame([('max_rec','50% (1)', '50%(1)'),
                   ('reg_pp','100%(0)', '50%(1)'),
                   ('disch_no','100%(0)', '100%(0)'),
                   ('temp_rec','100%(0)', '0')],
                  columns=('variables','Jorh Hospital (N=2)', 'Bugh Hospital (N=2)'))
dff

请注意,在最终表中,我需要用 percentage 表示缺失的值,但仍要给出它们的数量,并且该列的值为 N 代表特定医院中每个变量的总行数

1 个答案:

答案 0 :(得分:3)

对输出进行一些修改后,这应该可以工作:

df.iloc[:,2:].notna().groupby(df['Hosp_name']).mean().T

输出:

Hosp_name  Bugh Hospital  Jorh Hospital
max_rec              0.5            0.5
reg_pp               0.5            1.0
disch_no             1.0            1.0
temp_rec             0.0            1.0