防止代码重复的函数(使用Jupyter Notebook的Python Pandas)



我是编程新手,非常感谢您的帮助。试图避免在pandas数据帧上查询代码的重复。

x1是具有各种列名的数据帧,例如高血压、糖尿病、酗酒、残疾、年龄组、约会

上面列出的每个疾病列都包含0-没有疾病,2/3/4-有不同的疾病阶段

所以当我过滤'!=0'它将列出患有该特定疾病的患者的记录。因此,每种疾病都会过滤出不同的记录集。

我在下面的查询中写了4次,并用其他疾病替换了"高血压"一词,得到了每种疾病的4张不同的图表。

但它不是干净的编码。我需要帮助来了解如何使用哪个函数,以及如何使用它只编写1个查询而不是4个查询。

hyp1 = x1.query('Hypertension != 0')
i1 = hyp1.groupby('Age_Group')['Hypertension'].value_counts().plot(kind = 'bar',label = 'Hypertension',figsize=(6, 6))
plt.title('Appointments Missed by Patients with Hypertension')
plt.xlabel('Hypertension Age_Group')
plt.ylabel('Appointments missed');

下面是另一组我不知道如何浓缩。

`print('Details of all  appointments')
`print('')`
`print(df.Date_Appointment.value_counts().sort_index())`
`print('')`
`print(df.Date_Appointment.describe())`
`print('')`
`print(df.Date_Appointment.value_counts().describe())`
`print('')`
`print('Median = ', (round(df.Date_Appointment.value_counts().mean())))`
`print('Median = ', (round (df.Date_Appointment.value_counts().median())))`
`print('Mode = ', (df.Date_Appointment.value_counts().mode()))`

非常感谢您的详细回复。提前谢谢。

  • 创建所需列的列表
  • 遍历它们
  • 使用f字符串(例如f'{...}(
diseases = {'Hypertension': 'red', 'Diabetes': 'blue', 'Alcoholism': 'green', 'Handicap': 'yellow'}
for disease, color in diseases.items():
subset = x1.query(f'{disease} != 0')
i1 = subset.groupby('Age_Group')[f'{disease}'].value_counts().plot(kind='bar', label=f'{disease}', figsize=(6, 6), color=color)
plt.title(f'Appointments Missed by Patients with {disease}')
plt.xlabel(f'{disease} Age Group')
plt.ylabel('Appointments missed')
plt.show()
  • 顺便说一句,使用示例数据会更容易
  • 对于下半部分,还不清楚您想用什么来浓缩或替换Date_Appointment

最新更新