首页 > 解决方案 > 防止代码重复的函数(Pandas for Python using Jupyter Notebook)

问题描述

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

x1 是具有各种列名称的数据框,例如 Hypertension、Diabetes、Alcoholism、Handicap、Age_Group、Date_Appointment

上面列出的每个疾病列包含 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()))`

非常感谢您的详细回复。先感谢您。

标签: python-3.xpandasfunctiondataframematplotlib

解决方案


  • 创建所需列的列表
  • 遍历它们
  • 使用 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的内容。

推荐阅读