python-3.x - 防止代码重复的函数(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()))`
非常感谢您的详细回复。先感谢您。
解决方案
- 创建所需列的列表
- 遍历它们
- 使用 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
的内容。
推荐阅读
- tensorflow - 在 Ubuntu 18.04 中安装 conda tensorflow-gpu 时是否应将显卡物理安装在 PV 中
- php - Laravel 会话数据不老化
- react-native - React Native:console.error:“没有为密钥“auth”提供减速器”
- jquery - Laravel 中的 jQuery/AJAX 多文件上传
- sql - 从宏查询(加入)外部工作簿
- jquery - 我可以将 Ajax 与 asp.net 4.5 .NET Framework FileUpload 控件一起使用来上传多个文件吗?
- javascript - 仅从 firebase 实时数据库中获取当前用户数据
- dynamics-crm - 计算与该特定公司相关的每个人的其他关系
- testing - 跨多个内核测试内核模块
- excel - 如果超过 1 个选项,则自动填充/带有数据验证的下拉列表