4.4 KiB
Анализ данных о сердечно-сосудистых заболеваниях
Описание проекта
В данном проекте выполнен анализ данных о факторах риска сердечно-сосудистых заболеваний на основе датасета Heart Disease Dataset (cleveland1.csv).
Работа выполнена в JupyterLab в рамках практической работы №3 по анализу и визуализации данных.
Цель работы
Освоить базовую работу с JupyterLab, библиотеками для анализа данных и визуализации, а также закрепить навыки ведения проекта с использованием Git.
Используемые библиотеки
В проекте использовались следующие библиотеки:
- pandas
- numpy
- matplotlib
- seaborn
- tqdm
Что было сделано
В ходе работы были выполнены следующие действия:
- Загружен датасет из CSV-файла
cleveland1.csv - Проведён первичный анализ данных:
- просмотр первых строк таблицы (
.head()) - анализ структуры данных (
.info()) - получение статистического описания (
.describe()) - проверка пропущенных значений (
.isnull().sum())
- просмотр первых строк таблицы (
- Выполнена подготовка данных:
- стандартизированы названия колонок
- Проведён анализ по группам:
- группировка по полу (gender)
- группировка по наличию заболевания (target)
- сравнение средних показателей
- Создан новый признак
high_cholesterol_flagдля выделения случаев повышенного риска (холестерин > 240) - Построены графики:
- boxplot распределения возраста у больных и здоровых
- scatterplot взаимосвязи холестерина и пульса
- гистограмма распределения возраста пациентов
- boxplot уровня холестерина по полу
- тепловая карта корреляций всех числовых признаков
- Использована библиотека tqdm для отображения прогресса обработки данных
- Сохранены результаты обработки в CSV-файл
Результаты анализа
На основе проведённого анализа получены следующие выводы:
- Возраст является значимым фактором риска — средний возраст больных пациентов выше, чем здоровых
- Холестерин положительно коррелирует с наличием заболевания
- Максимальный пульс у больных пациентов в среднем ниже
- Корреляционная матрица показывает умеренную связь между возрастом и заболеванием
Структура проекта
- 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("") == []