104 lines
4.4 KiB
Markdown
104 lines
4.4 KiB
Markdown
# Анализ данных о сердечно-сосудистых заболеваниях
|
||
|
||
## Описание проекта
|
||
|
||
В данном проекте выполнен анализ данных о факторах риска сердечно-сосудистых заболеваний на основе датасета Heart Disease Dataset (cleveland1.csv).
|
||
|
||
Работа выполнена в JupyterLab в рамках практической работы №3 по анализу и визуализации данных.
|
||
|
||
---
|
||
|
||
## Цель работы
|
||
|
||
Освоить базовую работу с JupyterLab, библиотеками для анализа данных и визуализации, а также закрепить навыки ведения проекта с использованием Git.
|
||
|
||
---
|
||
|
||
## Используемые библиотеки
|
||
|
||
В проекте использовались следующие библиотеки:
|
||
|
||
- pandas
|
||
- numpy
|
||
- matplotlib
|
||
- seaborn
|
||
- tqdm
|
||
|
||
---
|
||
|
||
## Что было сделано
|
||
|
||
В ходе работы были выполнены следующие действия:
|
||
|
||
1. **Загружен датасет** из CSV-файла `cleveland1.csv`
|
||
2. **Проведён первичный анализ данных:**
|
||
- просмотр первых строк таблицы (`.head()`)
|
||
- анализ структуры данных (`.info()`)
|
||
- получение статистического описания (`.describe()`)
|
||
- проверка пропущенных значений (`.isnull().sum()`)
|
||
3. **Выполнена подготовка данных:**
|
||
- стандартизированы названия колонок
|
||
4. **Проведён анализ по группам:**
|
||
- группировка по полу (gender)
|
||
- группировка по наличию заболевания (target)
|
||
- сравнение средних показателей
|
||
5. **Создан новый признак** `high_cholesterol_flag` для выделения случаев повышенного риска (холестерин > 240)
|
||
6. **Построены графики:**
|
||
- boxplot распределения возраста у больных и здоровых
|
||
- scatterplot взаимосвязи холестерина и пульса
|
||
- гистограмма распределения возраста пациентов
|
||
- boxplot уровня холестерина по полу
|
||
- тепловая карта корреляций всех числовых признаков
|
||
7. **Использована библиотека tqdm** для отображения прогресса обработки данных
|
||
8. **Сохранены результаты** обработки в CSV-файл
|
||
|
||
---
|
||
|
||
## Результаты анализа
|
||
|
||
На основе проведённого анализа получены следующие выводы:
|
||
|
||
1. **Возраст** является значимым фактором риска — средний возраст больных пациентов выше, чем здоровых
|
||
2. **Холестерин** положительно коррелирует с наличием заболевания
|
||
3. **Максимальный пульс** у больных пациентов в среднем ниже
|
||
4. **Корреляционная матрица** показывает умеренную связь между возрастом и заболеванием
|
||
|
||
---
|
||
|
||
## Структура проекта
|
||
|
||
- praktika03/.venv/
|
||
- praktika03/.gitignore
|
||
- praktika03/README.md
|
||
- praktika03/week2_analysis.ipynb
|
||
- praktika03/cleveland1.csv
|
||
- praktika03/cleveland2.csv
|
||
- praktika03/Dataset Heart Disease.csv
|
||
- praktika03/heart_disease_results.csv
|
||
|
||
|
||
ввоооооооооооооооооооот
|
||
def run_length_encode(s: str) -> list:
|
||
if not s:
|
||
return []
|
||
|
||
result = []
|
||
current_char = s[0]
|
||
count = 1
|
||
|
||
for char in s[1:]:
|
||
if char == current_char:
|
||
count += 1
|
||
else:
|
||
result.append((current_char, count))
|
||
current_char = char
|
||
count = 1
|
||
|
||
result.append((current_char, count))
|
||
return result
|
||
|
||
|
||
# Тесты
|
||
assert run_length_encode("aaabbc") == [("a", 3), ("b", 2), ("c", 1)]
|
||
assert run_length_encode("abc") == [("a", 1), ("b", 1), ("c", 1)]
|
||
assert run_length_encode("") == [] |