背景:我正在尝试使用csv文件中的数据来提出问题并根据数据得出结论。数据是来自巴西诊所的患者就诊日志,包括其他患者数据以及患者是否未出现。我选择检查患者年龄与未出现数据之间的相关性。
问题:给定就诊人数,患者ID,年龄和未显示数据,我如何编制与每个唯一患者ID相关的年龄数组(以便我可以评估均值前往诊所的唯一患者总数的年龄。
我的代码:
# data set of no shows at a clinic in Brazil
noshow_data = pd.read_csv('noshowappointments-kagglev2-may-2016.csv')
noshow_df = pd.DataFrame(noshow_data)
这是代码的开头,给出了csv整个数据帧的开头
# Next I construct a dataframe with only the data I'm interested in:
ptid = noshow_df['PatientId']
ages = noshow_df['Age']
noshow = noshow_df['No-show']
ptid_ages_noshow = pd.DataFrame({'PatientId' : pt_id, 'Ages' : ages,
'No_show' : noshow})
ptid_ages_noshow
在这里,我对数据进行了排序,以显示唯一患者的多次就诊
# Now, I know how to determine the total number of unique patients:
# total number of unique patients
num_unique_pts = noshow_df.PatientId.unique()
len(num_unique_pts)
如果我想查找所有就诊过程中所有患者的平均年龄,我将使用:
# mean age of all vists
ages = noshow_data['Age']
ages.mean()
所以我的问题是,我怎么能找到所有独特患者的平均年龄?
答案 0 :(得分:1)
您可以只使用pandas
中可用的groupby函数,而不必担心相关列:
ptid_ages_noshow[['PatientId','Ages']].groupby('PatientId').mean()
答案 1 :(得分:0)
因此,您只想为每个患者保留一个约会进行计算?这样做是这样的:
noshow_df.drop_duplicates('PatientId')['Age'].mean()
请记住,人们的年龄会随着时间而变化。您需要确定如何处理此问题。