Использование методов Data science для представления успеваемости ученика с помощью программы в среде Python

XVI Международный конкурс научно-исследовательских и творческих работ учащихся
Старт в науке. Летняя площадка 2022

Использование методов Data science для представления успеваемости ученика с помощью программы в среде Python

Портареску А.И. 1
1МБОУ ЛЕСНОГОРОДСКАЯ СОШ
Портареску Е.А. 1
1МБОУ ЛЕСНОГОРОДСКАЯ СОШ
Автор работы награжден дипломом победителя III степени
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF

Введение

С появлением в образовательной системе электронного журнала и школьного портала ученикам и их родителям стало намного удобнее мониторить школьную успеваемость. Используя школьный портал, мы можем получить сведения о многих параметрах успеваемости, но не весь спектр, который мог бы быть. Некоторые функции либо отсутствуют, либо доступны только по платной подписке. В связи с этим у меня возникло идея разработать проект, дополняющий функционал школьного портала.

Данная работа представляет из себя программу-аналитик на языке Python 3.8, с помощью которой производятся обработка и визуализация данных об успеваемости ученика.

Объект исследования проекта:

Метод использования алгоритмов Data science и нестандартного подхода для прогнозирования результатов.

Предмет исследования проекта:

Использование возможностей языка и дополнительных библиотек при создании данного метода.

Цели проекта:

1. Реализация возможностей языка Python, а также методов Data science для обработки и визуализация данных об успеваемости ученика.

2. Обеспечение возможности практического применения данной программы учениками и их родителями, с использованием данных из школьного портала.

Задачи проекта:

1. Разработка алгоритмов для реализации анализа, обработки и прогнозирования успеваемости ученика.

2. Создание программы – аналитик на языке Python для обработки и визуализаций больших объёмов данных.

3. Усовершенствование навыков программирования и более глубокое изучение возможностей языка программирования Python с использованием дополнительных библиотек.

Метод, применяемый при создании данного проекта

Последовательная реализация функций, начиная с простой визуализаций данных и заканчивая сравнением и прогнозом успеваемости. Тестирование программы- аналитик учениками среднего и старшего звена.

II. Основная часть

До появления в нашей жизни информационных технологий, все данные об успеваемости ученика записывались в бумажном журнале. Для проведения какого-либо анализа необходимо было производить объёмные и непростые математические вычисления. С созданием приложений для образовательной системы этот процесс в корни изменился. Приложение « школьный портал» анализирует и обрабатывает данные учеников и выдает готовые результаты.

В данной работе разработана программа, которая расширяет функционал школьного портала и ее применение не имеет ограничения для пользователей. В неё входят такие функции как: динамика, статистика, прогноз успеваемости и сравнение успеваемости по двум различных предметов.

Рассмотрим последовательность работы функций, содержащихся в нашей программе –аналитик.

При выборе функций «динамика» программа в автоматическом режиме использует данные из загруженного в её системе пользователем файла и на основе этих данных выводит график изменения среднего балла на протяжения определённого периода.

Функция «прогноз» неординарна в своем исполнение. Программа запрашивает у ученика желаемый результат по определённому предмету. Также в автоматическом режиме обрабатывает полученные данные и выводит минимальное количество оценок необходимое для достижения целей. Неординарный метод работы данной функций заключается в приведения значения всех оценок к одному одинаковому значению.

Возьмём простой пример:

У ученика всего две оценки 5 и 3. Ученик хочет 5, значит ему необходимо получить ещё n оценок 5, чтобы средний балл стал 4.5. Посчитав всё мы выяснили, что чтобы «перекрыть» одну 3 нужно получить три 5. Аналогично с оценкой 2, одна 2 = пять 5. Следовательно мы к количеству четвёрок прибавляем 3*количество 3 + 5*количество 2. Чтобы в результате было количество пятёрок, которые нужно получить, необходимо из количества четвёрок вычесть количество пятёрок. Распишем данный пример по выше указанной формуле:

Оценка | Количество

5 1

4 0

3 1

2 0

Количество четвёрок = 0+3*1+5*0 = 3

Результат: 3-1 = 2

Необходимо ещё две пятёрки.

Работа программы (Оценки ученика: 5,4,3,2)

Выберите режим.

Прогноз

Введите предмет.

test

Какую оценку Вы хотите?

5

----------------------------------------

Вам нужно минимум: 8 5.

Похожем образом работают и функции «статистика» и «сравнение».

«Статистика» выводит такие показатели как max средний бал за определенный период, min средний бал за определенный период, текущий средний бал, количество оценок определённого значения, пропуски и опоздания.

Выберите режим.

Статистика

Введите предмет.

Алгебра

----------------------------------------

Статистика:

Максимальный средний балл: 5.0

Минимальный средний балл: 4.8

Текущий средний балл: 4.88

Количество 5: 7

Количество 4: 1

Количество 3: 0

Количество 2: 0

Количество пропусков: 2

Количество опоздание: 0

Функция «сравнение», поможет узнать по какому из двух предметов у ученика средний бал выше и выведет в виде графика динамику этих предметов.

Выберите режим.

Сравнение

Введите первый предмет.

Английский язык

Введите второй предмет.

Алгебра

----------------------------------------

 

Английский язык

Алгебра

Максимальный

4.69

5.00

Минимальный

3.50

4.80

Текущий

4.69

4.88

По предмету: Алгебра,у Вас средний балл выше, чем по предмету: Английский язык.

III. Работа программы

При запуске программы открывается интерфейс программы в виде всплывающего окна-меню, где предлагается выбрать один из режимов работы программы.

В соответствии с выбранным режимом, программа просит ввести название одного или нескольких предметов и выдаёт результаты анализа и обработки данных пользователю.

Но для реализации такого интерфейса необходимо более мощное программное обеспечение (Windows 64-bit). Для устройств, которые не поддерживают такое программное обеспечение, была разработана “lite” версия.

IV. Заключение

В ходе работы над проектом были достигнуты поставленные цели и задачи по предоставлению пользователям школьного портала расширенного функционала без каких-либо ограничений. Используя данный продукт. пользователи имеют возможность получить необходимых результаты успеваемости используя личные данные.

Для решения задачи наглядности и удобства использовался язык программирования Python с дополнительными библиотеками и

методы Data science . Программное обеспечение представляет собой законченный продукт и может применяться в реальной жизни.

Актуальность программы- аналитик поддерживается спросом со стороны учителей, обучающихся и их родителей в ходе отслеживания результатов об успеваемости учеников.

Данный проект полезен еще и для тех учеников, кто желает углубить свои познания и получить навыки программирования на языке Python при создании программ для уроков информатики.

В качестве возможных путей дальнейшего развития разработанного программного продукта можно указать:

-усовершенствование архитектуры и возможность его использования не только для школьного портала

-увеличение количества функций

-разработка мобильной версий данной программы и ее дальнейшая оптимизация.

Список литературы:

1) Белова Г.В. Программирование в среде Python. Первые шаги. /Г.В.Белова -М.:Солон -Пресс- Москва, 2007. - 125 с.

2) Дронов В.Г Python 3 и PyQt 5. Разработка приложений/В.Г. Дронов-М.:BHV, 2010.-200 с.

3) Энциклопедический словарь юного программиста. Сост.А.П. Савин. – М.: педагогика, 1989.-352с.:ил.

4) https://matplotlib.org/stable/tutorials/index.html

5) https://numpy.org/doc/1.22/user/basics.html

6) https://pandas.pydata.org/docs/user_guide/index.html#user-guide

Справка об уникальности

Приложение 1

Текст программы, выполняющий функцию отображение интерфейса.

#Импортбиблиотек.

import turtle

from turtle import Turtle, Screen

#Настройкаокна.

turtle1 = turtle.Screen()

turtle1.bgcolor("black")

# Создание объектов.

turtle2 = turtle.Pen()

turtle3 = turtle.Pen()

turtle4 = turtle.Pen()

turtle5 = turtle.Pen()

turtle6 = turtle.Pen()

turtle7 = turtle.Pen()

turtle8 = turtle.Pen()

turtle9 = turtle.Pen()

#Добавлениекартиноквокно.

turtle.register_shape("Nazvanie.gif")

turtle.register_shape("Dinamika.gif")

turtle.register_shape("Statistika.gif")

turtle.register_shape("Statistika.gif")

turtle.register_shape("Prognoz.gif")

turtle.register_shape("Sravnenie.gif")

turtle2.penup()

turtle3.penup()

turtle4.penup()

turtle5.penup()

turtle6.penup()

turtle2.setpos(0,310)

turtle2.shape("Nazvanie.gif")

turtle3.setpos(0,170)

turtle3.shape("Dinamika.gif")

turtle4.setpos(0,0)

turtle4.shape("Statistika.gif")

turtle5.setpos(0,-150)

turtle5.shape("Prognoz.gif")

turtle6.setpos(0,-300)

turtle6.shape("Sravnenie.gif")

turtle9.color("white")

turtle9.penup()

turtle9.setpos(0,500)

Приложение 2

Текст программы выполняющий функцию «Динамика».

#Построение графика на основе массива со средними баллами.

print("----------------------------------------")

fun_sred_b(p['predmet_o'])

plt.plot(p['Data1']["Датаивремя"],p['sred_b_o'],'r')

plt.show()

Текст программы выполняющий функцию «Статистика».

p['sred_b_min'] = 5

fun_sred_b(p['predmet_o'])

fun_ozenki(p['predmet_o'])

print("----------------------------------------")

print("Статистика:")

#Вывод максимального средного балла.

print("Максимальный средний балл:", p['sred_b_o'].max())

#Выводминимальногосреднегобалла.

for i in range (len(p['Data1'].index)):

if (p['sred_b_o'][i] < p['sred_b_min']) and (p['sred_b_o'][i] != 0):

p['sred_b_min'] = p['sred_b_o'][i]

print("Минимальный средний балл:", p['sred_b_min'])

#Вывод количества 5,4,3,2.

print("Текущий средний балл:", p['sred_b_o'][len(p['Data1'].index)-1])

print("Количество 5:",p['piat'])

print("Количество 4:",p['chetire'])

print("Количество 3:",p['tri'])

print("Количество 2:",p['dva'])

#Подсчёт и вывод количества пропусков и опозданий.

for i in range (len(p['Data1'].index)):

if (p['Data1'].iloc[i,1] == "Пропуск") or (p['Data1'].iloc[i,1] == "Болезнь"):

p['d'] = p['d'] + 1

print("Количество пропусков:",p['d'])

p['d'] = 0

for i in range (len(p['Data1'].index)):

if p['Data1'].iloc[i,2] == "Опоздание":

p['d'] = p['d'] + 1

print("Количество опоздание:",p['d'])

Текст программы выполняющий функцию «Прогноз».

fun_ozenki(p['predmet_o'])

fun_sred_b(p['predmet_o'])

#Ввод желаемой оценки.

print("Какую оценку Вы хотите?")

p['c'] = int(input(""))

print("----------------------------------------")

if p['c'] == 5:

if p['sred_b_o'][len(p['Data1'].index)-1] >= 4.5:

print("У Вас и так выходит", p['c'])

if p['sred_b_o'][len(p['Data1'].index)-1] < 4.5:

p['chetire'] = p['chetire'] + 3*p['tri'] + 5*p['dva']

print("Вамнужноминимум:", p['chetire']-p['piat'], "5.")

if p['c'] == 4:

if p['sred_b_o'][len(p['Data1'].index)-1] >= 4.5:

print("У Вас и так выходит 5")

if (p['sred_b_o'][len(p['Data1'].index)-1] >= 3.5) and (p['sred_b_o'][len(p['Data1'].index)-1] < 4.5):

print("У Вас и так выходит 4")

if p['sred_b_o'][len(p['Data1'].index)-1] < 3.5:

p['tri'] = p['tri'] - 3*p['piat']

p['chetire'] = p['chetire'] - 3*p['dva']

print("Вамнужноминимум:", p['tri']-p['chetire'], "4.")

if p['c'] == 3:

if p['sred_b_o'][len(p['Data1'].index)-1] >= 4.5:

print("У Вас и так выходит 5")

if (p['sred_b_o'][len(p['Data1'].index)-1] >= 3.5) and (p['sred_b_o'][len(p['Data1'].index)-1] < 4.5):

print("У Вас и так выходит 4")

if (p['sred_b_o'][len(p['Data1'].index)-1] >= 2.5) and (p['sred_b_o'][len(p['Data1'].index)-1] < 3.5):

print("У Вас и так выходит 3")

if p['sred_b_o'][len(p['Data1'].index)-1] < 2.5:

p['dva'] = p['dva'] - 5*p['piat']

p['tri'] = p['tri'] + 3*p['chetire']

print("Вам нужно минимум:", p['dva']-p['tri'], "3.")

Текст программы выполняющий функцию «Сравнение».

# Ввод первого и второго предмета.

print("Введите первый предмет.")

p['predmet1'] = input("")

print("Введите второй предмет.")

p['predmet2'] = input("")

print("----------------------------------------")

#Создание массивов со средними баллами для обоих предмет.

fun_sred_b(p['predmet2'])

p['sred_b2'] = p['sred_b_o']

p['Data2'] = p['Data1']

fun_sred_b(p['predmet1'])

p['sred_b1'] = p['sred_b_o']

#Создание DataFrame для сравнения параметров по двум предметам.

p['sravnenie'] = pd.DataFrame([[0,0],[0,0],[0,0]],index = ["Максимальный","Минимальный","Текущий"],columns = (p['predmet1'],p['predmet2']))

p['sravnenie'].iloc[0,0] = p['sred_b1'].max()

p['sravnenie'].iloc[0,1] = p['sred_b2'].max()

p['sred_b_min'] = 5

for i in range (len(p['Data2'].index)):

if (p['sred_b1'][i] < p['sred_b_min']) and (p['sred_b1'][i] != 0):

p['sred_b_min'] = p['sred_b1'][i]

p['sravnenie'].iloc[1,0] = p['sred_b_min']

p['sred_b_min'] = 5

for i in range (len(p['Data1'].index)):

if (p['sred_b2'][i] < p['sred_b_min']) and (p['sred_b2'][i] != 0):

p['sred_b_min'] = p['sred_b2'][i]

p['sravnenie'].iloc[1,1] = p['sred_b_min']

p['sravnenie'].iloc[2,0] = p['sred_b1'][len(p['Data2'].index)-1]

p['sravnenie'].iloc[2,1] = p['sred_b2'][len(p['Data1'].index)-1]

#Построение графиков разных цветов и вывод результатов анализа.

p['okno'],p['osi'] = plt.subplots(1,2)

if p['sravnenie'].iloc[2,0] > p['sravnenie'].iloc[2,1]:

p['osi'][0].plot(p['Data2']["Датаивремя"],p['sred_b1'],'g')

p['osi'][1].plot(p['Data1']["Датаивремя"],p['sred_b2'],'r')

plt.show()

display(p['sravnenie'])

print ("По предмету:",p['predmet1'] + "," + "у Вас средний балл выше, чем по предмету:",p['predmet2'])

if p['sravnenie'].iloc[2,0] < p['sravnenie'].iloc[2,1]:

p['osi'][0].plot(p['sred_b1'],'r')

p['osi'][1].plot(p['sred_b2'],'g')

plt.show()

display(p['sravnenie'])

print ("По предмету:",p['predmet2'] + "," + "у Вас средний балл выше, чем по предмету:",p['predmet1'])

Просмотров работы: 158