
6 семестр / БД1
.docxГУАП
КАФЕДРА № 41
ОТЧЕТ ЗАЩИЩЕН С ОЦЕНКОЙ
ПРЕПОДАВАТЕЛЬ
старший преподаватель |
|
|
|
Б.К. Акопян |
должность, уч. степень, звание |
|
подпись, дата |
|
инициалы, фамилия |
ОТЧЕТ О ЛАБОРАТОРНОЙ РАБОТЕ №1 |
СВЯЗЬ СУБД MYSQL И PYTHON. ВИЗУАЛИЗАЦИЯ ДАННЫХ В PYTHON. |
по курсу: БАЗЫ ДАННЫХ |
|
РАБОТУ ВЫПОЛНИЛ
СТУДЕНТ ГР. № |
|
|
|
|
|
|
|
|
|
|
подпись, дата |
|
инициалы, фамилия |
Санкт-Петербург 2024
Цель работы:
Произвести связь базы данных в MySQL и Python, извлечь данные из таблиц базы данных и выполнить анализ данных в БД с помощью визуализации в Python.
Вариант Занятость актеров театра
На рисунке 1 изображена схема используемой БД.
Рисунок 1 – Модель данных
Ход работы:
Осуществлено подключение к БД, выполнен запрос на выборку всех записей из таблицы Спектакли (Рисунок 2). Листинг кода представлен в приложении.
Рисунок 2 – Результат выборки
Построено 3 графика по таблицам Касса и Спектакли (Рисунок 3-5).
Рисунок 3 – Круговая диаграмма
По диаграмме видно, что среди спектаклей преобладает жанр Драма.
Рисунок 4 – Вертикальный barplot
По графику видно, что в среднем, самые высокие цены на спектакль «Отголоски прошлого», самые низкие на «Шум вокруг ничего».
Рисунок 5 – Горизонтальный barplot
На графике отображено число билетов в кассе на каждый спектакль, видно, что «Преступление и наказание» имеет больше всего билетов.
Вывод:
В ходе выполнения лабораторной работы были освоены навыки подключения к серверу MySQL с помощью языка программирования Python, подключение к БД, осуществление запросов и реализация графиков. Данные навыки позволяют анализировать информацию, хранящуюся в БД с наглядными графиками.
Список используемых источников:
1. A.В. Аграновский, В.В. Боженко, Е.Л. Турнецкая. - Учебно-методическое пособие «Разработка и администрирование базы данных с открытым исходным кодом» ‒ СПб.: ГУАП, 2022
2. Руководство по MySQL: https://metanit.com/sql/mysql.
ПРИЛОЖЕНИЕ
import pandas as pd
import pymysql.cursors
import matplotlib.pyplot as plt
connection = pymysql.connect(host = '127.0.0.1',
user = 'root',
password = 'root',
db ='theatre',
charset ='utf8mb4',
cursorclass=pymysql.cursors.DictCursor)
with connection.cursor() as cursor:
sql = "SELECT * FROM касса "
cursor.execute(sql)
rows = cursor.fetchall()
df_kassa = pd.DataFrame(rows)
sql = "SELECT * FROM спектакли "
cursor.execute(sql)
rows = cursor.fetchall()
df_spektakli = pd.DataFrame(rows)
connection.close()
print(df_spektakli)
genre_count = df_spektakli['Жанр'].value_counts()
plt.figure()
plt.pie(genre_count, labels=genre_count.index, autopct='%1.1f%%')
plt.legend(fontsize = 10, bbox_to_anchor=(1, 1))
plt.textprops={'size': 'x-large'}
plt.title('Число спектаклей по жанрам')
df_mean=df_kassa.pivot_table(index='Спектакль', values='Цена', aggfunc='mean').reset_index()
print(df_mean)
plt.figure()
plt.bar(df_mean['Спектакль'],df_mean['Цена'])
plt.tick_params(axis='x',rotation=15)
plt.title('Средняя цена билета на спектакль')
df_count=df_kassa['Спектакль'].value_counts().reset_index()
print(df_count)
plt.figure()
plt.barh(df_count['Спектакль'],df_count['count'])
plt.title('Число билетов в кассе на спектакль')
plt.show()