计数每个变量的楠,并以百分比表示



我是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

请注意在最后的表格中,我需要表示百分比中的缺失值,但仍然给出它们的数量,并且该列具有N以表示特定医院中每个变量的总行数

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

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

最新更新