---
id: 5e46f7f8ac417301a38fb92a
title: Візуалізатор медичних даних
challengeType: 10
forumTopicId: 462368
dashedName: medical-data-visualizer
---

# --description--

Ви будете <a href="https://replit.com/github/freeCodeCamp/boilerplate-medical-data-visualizer" target="_blank" rel="noopener noreferrer nofollow">працювати над цим проєктом з нашим стартовим кодом Replit</a>.

-   Почніть з імпорту проєкту на Replit.
-   Потім ви побачите вікно `.replit`.
-   Оберіть `Use run command` та натисніть кнопку `Done`.


Ми досі розробляємо інтерактивну частину навчальної програми з 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`.

## Розробка

Для розробки ви можете використати `main.py`, щоб протестувати свої функції. Натисніть кнопку "run" і `main.py` запуститься.

## Тестування

Ми імпортували тести з `test_module.py` до `main.py` для вашої зручності. Тести запустяться автоматично, коли ви натиснете на кнопку «run».

## Надсилання

Скопіюйте 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.
```
