
Выбор датасета и обоснование этого решения
Для своего анализа я выбрала датасет «Predict Students' Dropout and Academic Success» с Kaggle, так как я являюсь студентом университета, и проблемы академической успеваемости и отсева студентов непосредственно касаются меня и моих однокурсников. Исследование факторов, влияющих на эти аспекты, поможет лучше понять, что оказывает большое влияние на отчисление студентов, а что вообще с этим не связано.
Виды использованных графиков
Для анализа данных я использовала различные типы графиков, каждый из которых был выбран с учетом особенностей предоставляемых данных и целей анализа.
1. Box Plot Box Plot выбран для отображения распределения баллов при поступлении и сравнения студентов, окончивших и не окончивших учебу. Он показывает медиану, квартили и выбросы, что делает его идеальным для выявления центральных тенденций и разброса данных.
2. Histplot Гистограмма с KDE используется для визуализации распределения баллов при поступлении по категориям завершения учебы. Она позволяет легко сравнить частоты и плотности баллов, добавляя цветовое различие между группами студентов.
3. KDE Plot KDE Plot выбран для отображения распределения возраста при поступлении с учетом статуса завершения учебы. Этот график предоставляет гладкое и детализированное представление плотности распределения, что помогает сравнить группы.
4. Countplot Countplot используется для анализа распределения полов среди студентов, окончивших и не окончивших учебу. Он наглядно показывает количество наблюдений для каждой категории пола, что делает различия между группами очевидными.
Несколько типов графиков были выбраны не только из аналитической необходимости, но и из интереса, чтобы продемонстрировать, как данные можно представлять в различных формах. Это показывает, как всяческие графики могут по-разному интерпретировать и визуализировать один и тот же набор данных.
Обработка и анализ данных
Для начала работы с датасетом нужно импортировать данные из CSV-файла в DataFrame с использованием библиотеки pandas. Далее используем функцию data.head (), которая отображает первые пять строк DataFrame. Это полезно для быстрого ознакомления со структурой и содержимым данных. В данном случае я использовала следующий код:
После запуска этой ячейки кода мы видим, что в DataFrame 37 столбцов, содержащих различную информацию о студентах, включая их семейное положение, способ подачи заявления, предыдущее образование, оценки и другие характеристики:
В работе я использовала библиотеки matplotlib и seaborn для создания графика. Seaborn обеспечивает более высокоуровневый интерфейс для создания статистических графиков, таких как boxplot.
Первое, что пришло мне на ум, когда я нашла этот датасет, проверить влияют ли баллы при поступлении на успешное завершение обучения или нет.
Для этого я прописала следующий код:
Получился такой график:
На этом графике можно видеть, как оценки при поступлении (Admission grade) распределены в зависимости от статуса завершения обучения (Target). Я использовала ящик с усами (boxplot), чтобы наглядно показать медиану, квартили и выбросы в каждой категории статуса завершения обучения.
Предварительно можно сделать вывод, что студенты с более высокими оценками при поступлении, возможно, имеют больше шансов успешно завершить обучение. Это наблюдение может стать основой для дальнейшего исследования влияния других факторов, таких как пол, возраст, социальный статус и так далее, на исходы обучения.
После построения boxplot для анализа влияния оценок при поступлении на вероятность завершения учебы, меня заинтересовало более детальное распределение данных в каждой категории статуса завершения обучения. Я решила построить гистограмму с KDE (Kernel Density Estimate) для тех же самых данных, чтобы получить более полное представление о их распределении.
Для этого я прописала следующий код:
После запуска ячейки мы видим следующий график:
Гистограмма с KDE позволяет увидеть форму распределения данных более подробно, отображая плотность вероятности на основе выборки. Это дополнительно помогает выявить возможные пики или особенности, которые могут быть не так заметны на boxplot.
Из этого графика распределения оценок при поступлении в зависимости от целевой группы («Dropout» — отчисленные, «Graduate» — поступившие в магистратуру, «Enrolled» — продолжающие обучение на бакалавриате) можно сделать следующие выводы: 1. Студенты с более низкими оценками при поступлении (диапазон около 100-120) имеют наибольшую вероятность отчисления, о чем свидетельствует самый высокий пик синей кривой в этом диапазоне.
2. Студенты с высокими оценками при поступлении (диапазон около 160-180) наиболее склонны продолжать обучение в магистратуре после получения степени бакалавра, что отражает самый высокий пик зеленой кривой в этом диапазоне.
3. Распределение оценок студентов, продолживших обучение на бакалавриате (оранжевая кривая), имеет более сглаженный характер и сосредоточено вокруг среднего диапазона оценок (120-140).
Таким образом, график наглядно демонстрирует, что академическая успеваемость при поступлении (измеряемая оценками) является хорошим предиктором дальнейших образовательных траекторий студентов. Низкие оценки связаны с повышенным риском отчисления, в то время как высокие оценки увеличивают шансы на продолжение образования в магистратуре.
Переход к гистограмме с KDE был сделан для более глубокого анализа данных и получения дополнительной информации о их распределении в контексте нашего исследования о зависимости успеха в обучении от оценок при поступлении.
Далее я решила изучить влияние возраста студентов на их статус завершения обучения. Для этого я решила построить график KDEplot. Этот тип графика позволяет оценить плотность вероятности распределения возраста в разных категориях статуса завершения обучения.
Вот такой код для этого я прописала:
Такой график получился:
На графике используется цветовая схема, которая позволяет сравнить распределения возраста среди студентов, завершивших обучение, и тех, кто его не завершил. Я использовала параметр hue='Target', чтобы разделить данные по категориям статуса завершения, и multiple='stack', чтобы столбики KDE были наложены друг на друга для наглядного сравнения.
Такой подход помогает исследовать, есть ли какие-либо явные различия в распределении возраста между группами студентов с разным исходом обучения. Это важно для понимания того, как возраст может влиять на вероятность успешного завершения образовательной программы.
На основе получившегося графика можно сделать следующие выводы: 1. Студенты, отчисленные в процессе обучения (синяя кривая), имеют наиболее широкий возрастной диапазон при поступлении, с пиком около 25-30 лет. Это свидетельствует о том, что риск отчисления присутствует как для молодых студентов, так и для тех, кто поступает в более старшем возрасте. 2. Студенты, продолжившие обучение в магистратуре (оранжевая кривая), в основном поступали в возрасте около 20-25 лет, что соответствует стандартному возрасту выпускников бакалавриата. 3. Студенты, оставшиеся на бакалавриате (зеленая кривая), имеют наиболее узкий возрастной диапазон при поступлении, с пиком около 18-20 лет, что типично для студентов, поступающих сразу после школы.
Таким образом, возраст при поступлении может быть важным фактором, влияющим на вероятность завершения или продолжения обучения. Стандартные студенты более склонны продолжать и завершать программу бакалавриата, в то время как более взрослые студенты имеют повышенный риск отчисления, но при этом часть из них успешно переходит на программы магистратуры.
После я решила посмотреть, как распределение пола может влиять на статус завершения обучения. Для этого я построила график countplot. Этот тип графика отображает количество наблюдений в каждой категории переменной, что позволяет оценить, как распределение пола различается среди студентов в зависимости от их исхода обучения.
Я прописала следующий код:
После запуска кода получаем такой график:
На графике каждая гистограмма расположена по полу (Gender), разделенному по категориям статуса завершения обучения (Target). Я использовала палитру (palette), чтобы отразить различные категории статуса завершения обучения цветами для лучшей наглядности.
Такой подход позволяет быстро оценить, есть ли какие-либо различия в распределении пола между группами студентов с разным исходом обучения. Это важно для выявления потенциальных различий в образовательных исходах в зависимости от пола студентов.
На основе этого графика, показывающего влияние пола на статус завершения обучения студентов, можно сделать следующие выводы: 1. Среди студентов, поступивших в магистратуру после бакалавриата (Graduate), значительно больше женщин (0 на оси X), чем мужчин (1 на оси X). Это указывает на то, что студентки чаще продолжают свое образование на уровне магистратуры. 2. Для студентов, отчисленных в процессе обучения (Dropout), соотношение мужчин и женщин примерно одинаковое, с небольшим преобладанием мужчин. 3. Среди студентов, продолжающих обучение на бакалавриате (Enrolled), также наблюдается некоторое преобладание женщин.
Таким образом, пол студента влияет на вероятность завершения или продолжения образования. Женщины демонстрируют лучшие показатели академической успеваемости, реже отчисляясь и чаще поступая в магистратуру по сравнению с мужчинами.
Стилизация графиков
В качестве референсов я взяла следующие картинки:


Для достижения подобного эффекта на графиках мне поможет библиотека mplcyberpunk.
Вот такой код я прописала для первого графика:
Я установила тёмный фон для графика с помощью facecolor='DarkSlateGrey' в plt.figure (figsize=(10, 6), facecolor='DarkSlateGrey'), что обеспечивает контраст и делает графики более выразительными. Для boxplot’а я использовала палитру цветов [«Fuchsia», «Aqua», «gold»], что помогает четко выделить различные категории на графике. Также была произведена настройка маркеров для выбросов, контура усов, линии медианы и контура крайних точек усов.
Стиль графика был установлен в cyberpunk с помощью plt.style.use («cyberpunk»), что добавляет неоновую эстетику и соответствует моим референсам. Для улучшения визуального впечатления я добавила неоновую подсветку с помощью mplcyberpunk.add_glow_effects (), что придает графику дополнительный объем и эффектность.
Я настроила различные элементы графика, такие как цвета текста, заголовка, меток осей и сетки.
Помимо этого я еще решила изменить стандартный шрифт на более современный, а именно Inter 4.0. Это придает графикам уникальный вид и соответствует общему стилю проекта.
Для этого я прописала следующее:
После запуска кода мы имеем следующий график:
Переходим к следующему графику. Для его стилизации я прописала следующее:
Я определила палитру цветов [«Aqua», «Magenta», «Yellow»], чтобы выделить различные категории статуса завершения обучения на графике.
Для создания образа, который соответствует моим референсам, я вновь выбрала стиль cyberpunk.
Так же, как и в предыдущем графике, изменила шрифт.
Также я настроила сетку графика с помощью plt.grid (True, linewidth=0.4, alpha=0.7, color='gray'), что обеспечивает как четкость и легкость восприятия данных, так и приятную визуальную составляющую.
В итоге у меня получился такой график:
Переходим к другому графику. Для того чтобы его стилизовать, я написала следующий код:
Я определила палитру цветов palette2 = [«DarkSlateBlue», «MediumPurple», «Plum»], которая помогла выделить разные категории статуса завершения обучения на графике.
Установила фон графика (plt.gca ().set_facecolor ('Indigo')) и цвет заливки всей фигуры (plt.gcf ().patch.set_facecolor ('BlueViolet')), что добавило контрастности и визуального интереса к графику.
Добавила сетку на график (plt.grid (True, linewidth=0.5, alpha=0.7, color='Plum')).
Заголовок (plt.title ('Влияние возраста на статус завершения обучения', fontproperties=prop)), подписи осей (plt.xlabel ('Возраст при поступлении', fontproperties=prop) и plt.ylabel ('Плотность', fontproperties=prop)) были стилизованы с использованием загруженного пользовательского шрифта для согласованности стиля с остальными графиками.
Размеры и цвет текстовых меток осей были настроены (plt.xticks (fontsize=12, color='white', fontproperties=prop) и plt.yticks (fontsize=12, color='white', fontproperties=prop)), чтобы обеспечить четкость и читаемость текста на графике.
График получился таким:
И финальный график. Вот код для его стилизации:
Здесь я выбрала палитру цветов [«Aqua», «Fuchsia», «yellow»], чтобы четко выделить различные категории статуса завершения обучения на графике, загрузила свой пользовательский шрифт InterVariable-Italic.ttf и установила его как основной для заголовка и подписей осей с помощью fontproperties=prop.
Так выглядит график после стилизации:
Заключение
Итак, в ходе работы был проведен полный цикл анализа данных, визуализации результатов и их стилизации.
На первом этапе я осуществила анализ данных с использованием датасета с Kaggle «Predict Students' Dropout and Academic Success». Основное внимание было уделено факторам, влияющим на вероятность завершения обучения студентами.
Для наглядного представления результатов анализа данных я использовала несколько типов графиков таких, как Boxplot, Histplot, KDEplot, Countplot. Эти графики позволили выявить взаимосвязи между различными переменными и исследовать факторы, влияющие на успешное завершение обучения.
Для улучшения визуального восприятия и соответствия общему стилю проекта я применила такие стилизационные приемы, как использование пользовательского шрифта, выбор цветовой палитры, настройка фона, размеров графиков, их составляющих и прочее.
Эти стилизационные приемы помогли сделать визуализацию данных более привлекательной и информативной, подчеркивая ключевые аспекты исследования.
Вывод
Данная работа позволила не только провести анализ данных и визуализацию результатов, но и подчеркнуть важность выбранных факторов в контексте прогнозирования успешности обучения студентов. Полученные результаты могут быть полезны для дальнейших исследований и, например, для разработки стратегий поддержки студентов в образовательных учреждениях.