Введение
Для своего проекта я выбрала тему диабета, поскольку в 2021 году, по данным ВОЗ, 529 млн. человек в мире имели сахарный диабет. По прогнозам к 2050-му году количество людей с этим диагнозом будет составлять 1.5 млрд. Я решила проанализировать, какие факторы могут влиять на наличие диабета, начиная от социальных заканчивая биологическими. Для своего анализа я выбрала датасет на «kaggle», поскольку это один из самых крупных источников датасетов для анализа данных. Выбранный мной набор данных содержит большое количество полей, и он собран на основе данных о почти двух тысячах пациентов, что позволяет сделать подробный и глубокий анализ.
В своей работе я использовала три вида графиков. Первый из них — столбчатый, позволяющий наглядно продемонстрировать распределение данных по одному или нескольким показателям. Второй вид графика — тепловая карта, позволяющая показать взаимосвязь между различными полями. Третий вид графика — 3D-диаграмма рассеивания, которая позволяет продемонстрировать распределение нескольких переменных в разрезе.
Начало работы
Для начала я загрузила датасет в Jupyter Notebook. Просмотрела данные и их типы.
Загрузка и просмотр данных
Просмотр типов данных
Далее я исключила переменные, которые не понадобились мне в последующем анализе.
Создание графиков
Удаление столбцов с информацией о идентификационными номерами врачей и пациентов
Далее я приступила к созданию графиков. Первая визуализация представляет собой столбчатую диаграмму с интерактивным виджетом, с помощью которого можно выбрать переменную, по которой будет построено распределение.
Код для создания первой визуализации
В блоке кода выше происходит определение функции, которая принимает аргумент, представляющий собой название столбца. Внутри этой функции извлекаются данные столбца, удаляя все предыдущие значения, и создаётся гистограмма с настроенной мной цветовой картой. Далее создаётся виджет для выбора переменной, позволяющий переключаться между графиками.
Столбчатые диаграммы распределения данных
Создание второй визуализации
Этот код вычисляет корреляционную матрицу, создаёт фигуры, оси и маску для верхнего треугольника. Далее стоится тепловая карта.
Тепловая карта
На этом графике наглядно показано насколько коррелируют между собой различные переменные. Бледно фиолетовый цвет обозначает слабую обратную корреляцию, белый — отсутствие корреляции, а оттенки зелёного — прямую корреляцию: чем темнее, тем корреляция выше. Из этой визуализации можно сделать вывод о том, что чем больше уровень гемоглобина и сахара в крови пациента, тем выше вероятность того, что у пациента диагностирован диабет. Также видно отсутствие корреляции между возрастом и наличием заболевания, что развеивает миф о том что диабет — возрастная болезнь.
Код для создания третьей визуализации
Код выше создаёт 3D-визуализацию, для неё выбираются 3 основных параметра из дата фрейма: наличие заболевания, уровни сахара в крови и гемоглобина. Также создаётся логика для окрашивания точек на диаграмме. Первая строка обеспечивает интерактивное взаимодействие с графиком.
3D-визуализация двух основных диабетических показателей в разрезе по болеющим и неболеющим диабетои
Из графика можно подтвердить те выводы, что мы сделали из предыдущей визуализации. Также можно отследить уникальные кейсы пациентов: высокий уровень сахара и гемоглобина у людей без диагностированного диабета и, наоборот, низкий уровень тех же показателей у пациентов с диагнозом.
Стилизация графиков
Для стилизации графиков я использовала кастомные цветовые палетки и цветовые карты. Далее я покажу примеры визуализации до и после стилизации.
Столбчатая диаграмма до стилизации
Столбчатая диаграмма после стилизации
3D график до стилизации
3D график после стилизации
Вывод
Из проведённого мной анализа можно сделать вывод, что на наличие диабета не влияют возрастные, социальные и экономические факторы, это говорит нам о том, насколько это заболевание сложное для исследования.
Ссылки
Блокнот с кодом и датасет: https://drive.google.com/drive/u/0/folders/11ihd5NWF5NFBLstelEeiOehOugHhd7VX
Обложка проекта была сделана в нейросети DALL-E*