Функции для предотвращения повторения кода (Pandas для Python с использованием Jupyter Notebook) - PullRequest
0 голосов
/ 21 апреля 2020

Я новичок в программировании и буду признателен за вашу помощь. Попытка избежать повторения кода для запроса на pandas фрейме данных.

x1 - это фрейм данных с различными именами столбцов, такими как Гипертония, Диабет, Алкоголизм, Гандикап, Возраст_Группа, Date_Appointment

Каждый из столбец заболевания, перечисленный выше, содержит 0 - не имеет заболевания, 2/3/4 - имеет различные стадии заболевания

Так что, когда я выберу '! = 0', в нем будут перечислены записи для пациентов с указанными c болезнь. Таким образом, каждое заболевание будет отфильтровывать различные наборы записей.

Я написал ниже запрос 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()))`

Буду признателен за ваш подробный ответ. Заранее спасибо.

1 Ответ

1 голос
/ 21 апреля 2020
  • Создать список нужных столбцов
  • Перебирать их
  • Использовать 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 на.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...