152 KiB
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
# Загрузка данных
df = pd.read_csv("..//..//static//csv//StudentsPerformance.csv")
# Вывод колонок
print(df.columns)
print()
df.info()
Описание набора¶
Контекст Оценки, полученные студентами
Содержание Этот набор данных состоит из оценок, полученных учащимися по различным предметам.
Вдохновение Понять влияние происхождения родителей, подготовки к тестированию и т. д. на успеваемость учащихся.
# Вывод столбцов
df.head()
# Краткая статистическая сводка для данных:
df.describe()
Анализ содержимого¶
Объекты наблюдения: студенты, участвующие в экзаменах.
Атрибуты объектов:
gender — пол: определяет гендерную принадлежность студента (мужской, женский).
race/ethnicity — этническая принадлежность: группа, к которой относится студент (например, различные расовые/этнические категории).
parental level of education — уровень образования родителей(например, среднее образование, высшее образование и т.д.).
lunch — тип обеда: информация о том, получает ли студент бесплатный или платный обед.
test preparation course — курс подготовки к тесту
math score — результаты экзаменов по математике.
reading score — результаты экзаменов по чтению.
writing score — результаты экзаменов по письму.
Бизнес-цель¶
Анализ факторов, влияющих на успеваемость студентов:
Цель: Исследовать, как различные факторы, такие как пол, этническая принадлежность, уровень образования родителей, тип обеда и наличие курса подготовки к тесту, влияют на оценки студентов по математике, чтению и письму.
Эффект: Это поможет образовательным учреждениям и политикам лучше понять, какие аспекты могут быть улучшены для повышения успеваемости студентов, а также выявить возможные неравенства в образовательных возможностях.
Прогнозирование успеваемости студентов
Цель: Разработать модель прогнозирования успеваемости студентов на основе имеющихся данных, таких как пол, раса/этническая принадлежность, уровень образования родителей, тип обеда и участие в подготовительных курсах.
Эффект: Это позволит предсказать, какие студенты могут столкнуться с трудностями в обучении, и принять меры для их поддержки. Например, образовательные учреждения могут инициировать дополнительные занятия или индивидуальные консультации для студентов, у которых ожидаются низкие результаты на экзаменах, тем самым повышая их шансы на успешную сдачу экзаменов.
Техническая цель¶
Разработка системы анализа факторов успеваемости студентов:
Цель: Создать аналитическую платформу, которая будет собирать, обрабатывать и визуализировать данные о студентах, включая их оценки и соответствующие факторы (пол, этническая принадлежность, уровень образования родителей, тип обеда, наличие подготовительных курсов).
Создание модели прогнозирования успеваемости студентов:
Цель: Разработать и внедрить предсказательную модель, которая будет оценивать вероятную успеваемость студентов на основании их характеристик и данных.
Анализ данных¶
# Проверка на пропущенные данные
df.isnull().sum()
Нет пропущенных данных
gender — пол: определяет гендерную принадлежность студента (мужской, женский).
race/ethnicity — этническая принадлежность: группа, к которой относится студент (например, различные расовые/этнические категории).
parental level of education — уровень образования родителей(например, среднее образование, высшее образование и т.д.).
lunch — тип обеда: информация о том, получает ли студент бесплатный или платный обед.
test preparation course — курс подготовки к тесту
math score — результаты экзаменов по математике.
reading score — результаты экзаменов по чтению.
writing score — результаты экзаменов по письму.
# Построим графики boxplot для обнаружения выбросов по каждой характеристике
plt.figure(figsize=(10, 10))
# Создание boxplot
for i, column in enumerate(['gender', 'race/ethnicity','parental level of education','lunch','test preparation course','math score','reading score','writing score'], 1):
plt.subplot(8, 3, i)
sns.boxplot(x=df[column])
plt.title(f"Boxplot для {column}")
plt.tight_layout()
plt.show()
Попробуем решить устранить проблему выбросов для writing score и reading score и math score. Используется метод усреднения данных для устранения выбросов.
Связи между объектами:¶
- Влияние атрибутов на успеваемость: Анализ данных покажет, как каждый из атрибутов (пол, этническая принадлежность, уровень образования родителей, тип обеда, курс подготовки) влияет на оценки студентов, что поможет выявить ключевые факторы, способствующие или препятствующие успеваемости.
- Корреляция между результатами экзаменов: Можно исследовать взаимосвязь между оценками по математике, чтению и письму, чтобы понять, например, влияет ли высокая успеваемость в одном предмете на другие.
- Группировка по характеристикам: Студенты могут быть сгруппированы по различным признакам (например, пол, уровень образования родителей) для анализа различий в успеваемости и выявления возможных неравенств в образовательных возможностях.
- Предсказательные связи: Используя модель прогнозирования успеваемости, можно будет установить, какие комбинации атрибутов (например, пол + уровень образования родителей + участие в курсах подготовки) наиболее предрасполагают к высокому или низкому результату, что позволит образовательным учреждениям эффективно направлять ресурсы на поддержку студентов с высоким риском неуспеха.
Данная гистограмма в диапазоне с 10 по 51 строки отображает: На оси X значения оценок по математике, разбитые на 100 интервалов. На оси Y будет указано количество записей (частота) в каждом из этих интервалов. Анализируя гистограмму "math score", можно сделать выводы о том, как распределяются оценки. Например, оценку 70 имеет 4 человека, а оценку 18 всего 1 человек из этого диапазона.
df.iloc[10:51].plot.hist(column=["math score"], bins=100)
Данная гистограмма отображает прцоентное соотношение мужчин и женщин. Что позволяет сделать вывод о том, что женщин среди студентов больше, чем мужчин.
import matplotlib.pyplot as plt
labels = 'Женщины', 'Мужчины'
sizes = [len(df[df['gender']== 'female']),
len(df[df['gender']== 'male'])]
plt.pie(sizes, labels=labels, autopct='%1.1f%%')
plt.show()
Данная диаграмма отображает соотношение студентов, которые прошли курс подготовки к тестированию по группам. Что позволяет сделать вывод о том, что, например, больше всего неподготовленных студентов в группе С.
plot = df.groupby(["race/ethnicity", "test preparation course"]).size().unstack().plot.bar(color=["pink", "green"])
plot.legend(["Прошёл", "Не прошёл"])