mirror of
https://github.com/freeCodeCamp/freeCodeCamp.git
synced 2026-04-12 10:00:39 -04:00
116 lines
12 KiB
Markdown
116 lines
12 KiB
Markdown
---
|
||
id: 5e46f7f8ac417301a38fb92a
|
||
title: Візуалізатор медичних даних
|
||
challengeType: 10
|
||
forumTopicId: 462368
|
||
dashedName: medical-data-visualizer
|
||
---
|
||
|
||
# --description--
|
||
|
||
Ви будете <a href="https://gitpod.io/?autostart=true#https://github.com/freeCodeCamp/boilerplate-medical-data-visualizer/" target="_blank" rel="noopener noreferrer nofollow">працювати над цим проєктом з нашим стартовим кодом Gitpod</a>.
|
||
|
||
Ми досі розробляємо інтерактивну частину навчальної програми з Python. Наразі є декілька відео на ютуб-каналі freeCodeCamp.org, які навчать всього необхідного для виконання цього проєкту:
|
||
|
||
- <a href="https://www.freecodecamp.org/news/python-for-everybody/" target="_blank" rel="noopener noreferrer nofollow">Python for Everybody Video Course</a> (14 годин)
|
||
|
||
- <a href="https://www.freecodecamp.org/news/how-to-analyze-data-with-python-pandas/" target="_blank" rel="noopener noreferrer nofollow">How to Analyze Data with Python Pandas</a> (10 годин)
|
||
|
||
# --instructions--
|
||
|
||
У цьому проєкті ви візуалізуєте і зробите підрахунки на основі даних медичного обстеження, використовуючи `matplotlib`, `seaborn` та `pandas`. Значення набору даних були зібрані під час медичних оглядів.
|
||
|
||
## Опис даних
|
||
|
||
Рядки в наборі даних представляють пацієнтів, а стовпці інформацію, як-от вимірювання тіла, результати різних аналізів крові та вибір способу життя. Ви будете використовувати набір даних, щоб дослідити зв’язок між серцевими захворюваннями, розмірами тіла, маркерами крові та вибором способу життя.
|
||
|
||
Назва файлу: medical_examination.csv
|
||
|
||
| Особливість | Тип змінної | Змінна | Тип значення |
|
||
|:-----------------------------------------------------:|:-----------------------:|:-------------:|:-------------------------------------------------:|
|
||
| Вік | Об’єктивна особливість | `age` | ціле число (дні) |
|
||
| Зріст | Об’єктивна особливість | `height` | ціле число (см) |
|
||
| Вага | Об’єктивна особливість | `weight` | плаваюче число (кг) |
|
||
| Стать | Об’єктивна особливість | `gender` | категоричний код |
|
||
| Систолічний кров’яний тиск | Особливість обстеження | `ap_hi` | ціле число |
|
||
| Діастолічний кров’яний тиск | Особливість обстеження | `ap_lo` | ціле число |
|
||
| Холестерин | Особливість обстеження | `cholesterol` | 1: нормально, 2: вище норми, 3: значно вище норми |
|
||
| Глюкоза | Особливість обстеження | `gluc` | 1: нормально, 2: вище норми, 3: значно вище норми |
|
||
| Куріння | Суб’єктивна особливість | `smoke` | двійкове |
|
||
| Вживання алкоголю | Суб’єктивна особливість | `alco` | двійкове |
|
||
| Фізична активність | Суб’єктивна особливість | `active` | двійкове |
|
||
| Наявність чи відсутність серцево-судинних захворювань | Цільова змінна | `cardio` | двійкове |
|
||
|
||
## Завдання
|
||
|
||
Створіть діаграму, подібну до `examples/Figure_1.png`, де ми покажемо кількість хороших та поганих результатів змінних `cholesterol`, `gluc`, `alco`, `active` та `smoke` для пацієнтів з `cardio=1` та `cardio=0` на різних панелях.
|
||
|
||
Використайте дані для виконання наступних завдань у `medical_data_visualizer.py`:
|
||
|
||
- Додайте стовпчик `overweight` до даних. Щоб визначити, чи має людина зайву вагу, спочатку обчисліть її ІМТ, поділивши вагу (кг) на зріст (м) у квадраті. Якщо це значення > 25, то людина має зайву вагу. Використайте значення `0` для НЕ надмірної ваги та значення `1` для надмірної ваги.
|
||
- Нормалізуйте дані, зробивши `0` завжди хорошим, а `1` завжди поганим. Якщо значення `cholesterol` або `gluc` дорівнює `1`, зробіть значення `0`. Якщо значення більше ніж `1`, зробіть значення `1`.
|
||
- Перетворіть дані у довгий формат та створіть діаграму, яка показує кількість підрахунків категорійних особливостей, використовуючи `catplot()` від `seaborn`. Набір даних має бути розділений `Cardio`, щоб для кожного значення `cardio` був стовпчик. Діаграма повинна виглядати так: `examples/Figure_1.png`.
|
||
- Очистіть дані. Відфільтруйте наступні сегменти пацієнтів, які представляють неправильні дані:
|
||
- діастолічний тиск вищий за систолічний (збережіть правильні дані за допомогою `(df['ap_lo'] <= df['ap_hi'])`)
|
||
- зріст менший за 2,5-ий процентиль (збережіть правильні дані з `(df['height'] >= df['height'].quantile(0.025))`)
|
||
- зріст більший за 97,5-ий процентиль
|
||
- вага менша за 2,5-ий процентиль
|
||
- вага більша за 97,5-ий процентиль
|
||
- Створіть кореляційну матрицю, використовуючи набір даних. Побудуйте кореляційну матрицю за допомогою `heatmap()` від `seaborn`. Замаскуйте верхній трикутник. Діаграма повинна виглядати так: `examples/Figure_2.png`.
|
||
|
||
Кожного разу, коли для змінної встановлено значення `None`, переконайтеся, що для неї встановлено правильний код.
|
||
|
||
Модульні тести для цього проєкту знаходяться в `test_module.py`.
|
||
|
||
## Інструкція
|
||
Додайте код до кожного числа у файлі `medical_data_visualizer.py` відповідно до числа з інструкції нижче.
|
||
|
||
1. Імпортуйте дані з `medical_examination.csv` та призначте їх до змінної `df`
|
||
2. Створіть стовпчик `overweight` в змінній `df`
|
||
3. Нормалізуйте дані, зробивши `0` завжди хорошим, а `1` завжди поганим. Якщо значення `cholesterol` або `gluc` дорівнює `1`, встановіть значення на `0`. Якщо значення більше ніж `1`, встановіть значення на `1`.
|
||
4. Створіть графік категорій у функції `draw_cat_plot`
|
||
5. Створіть DataFrame для графіка категорій, використовуючи `pd.melt` зі значеннями з `cholesterol`, `gluc`, `smoke`, `alco`, `active` та `overweight` в змінній `df_cat`.
|
||
6. Згрупуйте та реформатуйте дані в `df_cat`, щоб розділити їх за допомогою `cardio`. Покажіть кількість усіх складових. Один зі стовпчиків потрібно перейменувати, щоб забезпечити правильну роботу `catplot`.
|
||
7. Перетворіть дані в формат `long` та створіть діаграму, яка показує кількість підрахунків категорійних особливостей, використовуючи наступний метод з бібліотеки seaborn: `sns.catplot()`
|
||
8. Отримайте фігуру для виведення та збережіть її в змінній `fig`
|
||
9. Не змінюйте два наступні рядки
|
||
10. Створіть теплову карту у функції `draw_heat_map`
|
||
11. Очистіть дані в змінній `df_heat`, відфільтрувавши наступні сегменти пацієнтів, які представляють неправильні дані:
|
||
- зріст менший за 2,5-ий процентиль (збережіть правильні дані за допомогою `(df['height'] >= df['height'].quantile(0.025))`)
|
||
- зріст більший за 97,5-ий процентиль
|
||
- вага менша за 2,5-ий процентиль
|
||
- вага більша за 97,5-ий процентиль
|
||
12. Обчисліть кореляційну матрицю та збережіть її в змінній `corr`
|
||
13. Створіть маску для верхнього трикутника та збережіть його в змінній `mask`
|
||
14. Налаштуйте фігуру `matplotlib`
|
||
15. Побудуйте кореляційну матрицю за допомогою методу, наданого бібліотекою `seaborn`: `sns.heatmap()`
|
||
16. Не змінюйте два наступні рядки
|
||
|
||
## Розробка
|
||
|
||
Напишіть свій код в `medical_data_visualizer.py`. Для розробки ви можете використати `main.py`, щоб протестувати свій код.
|
||
|
||
## Тестування
|
||
|
||
Модульні тести для цього проєкту знаходяться в `test_module.py`. Ми імпортували тести з `test_module.py` до `main.py` для вашої зручності.
|
||
|
||
## Надсилання
|
||
|
||
Скопіюйте URL-адресу свого проєкту та відправте її до freeCodeCamp.
|
||
|
||
# --hints--
|
||
|
||
Проєкт повинен пройти усі тести Python.
|
||
|
||
```js
|
||
|
||
```
|
||
|
||
# --solutions--
|
||
|
||
```py
|
||
# Python challenges don't need solutions,
|
||
# because they would need to be tested against a full working project.
|
||
# Please check our contributing guidelines to learn more.
|
||
```
|