Лабораторная работа № 1
Связь СУБД MySQL и Python. Визуализация данных в Python.
Цель работы: произвести связь базы данных в MySQL и Python, извлечь данные из таблиц базы данных и выполнить анализ данных в БД с помощью визуализации в Python.
Теоретическая часть:
Библиотеки, которые нужны в Python:
•Pymysql для соединения с БД
•Matplotlib для графиков
•Pandas для работы с данными
По желанию вы можете использовать другие библиотеки для графиков и работы с данными.
Стандартный вариант соединения Python с БД в MySQL: import pandas as pd
import pymysql.cursors
import matplotlib.pyplot as plt
# Подключение к базе данных:
connection = pymysql.connect(host = '127.0.0.1', user = 'root', password = '',
db ='cinema1', # название базы
данных
charset ='utf8mb4', cursorclass =
pymysql.cursors.DictCursor)
Обратим внимание, что пароль (password) – это тот пароль, который вы используете в СУБД MySQL, он не обязательно будет пустым.
db – это название базы данных, к которой вы хотите получить доступ. Далее мы можем в Python использовать SQL-запрос на выборку данных. Один из возможных примеров кода приведен ниже:
with connection.cursor() as cursor: sql = "SELECT * FROM film " #запросSQL
#Выполнениекомзапросанды( |
Execute Query) |
cursor.execute(sql) |
|
rows = cursor.fetchall()# получениевсехтрочек |
|
df = pd.DataFrame(rows)получение#таблицысданными |
|
(DataFrame), |
SQL |
#котсодреаяржитзультатвыполнениязапроса |
|
#тоесть(всезаписиизтаблицы |
film) |
#Закрытсоед(Closeинения connection). connection.close()
print(df)
sql – это тот запрос, который вы хотите применить к БД. В данном примере показан простейший запрос на выборку всех данных из таблицы film.
Создавать датафрейм с помощью библиотеки pandas необязательно, но использование датафреймов позволяет проще работать с данными и затем строить графики.
Построим для примера простейший график (гистограмму).
#Построениеграфика: plt.figure()
plt.tick_params(axis='x',rotation=90)пово#дписиросит хнаградусов90
plt.bar(df['name_film'],df['duration_film'])гистограмм# а
фильмовпопродолжительности plt.выводshow()гистограммы#
Результат выполнения программы: гистограмма, где по «оси х» указаны фильмы, а по «оси у» их продолжительность.
Рисунок 1 – Гистограмма
Порядок выполнения работы:
1.Использовать предметную область и БД, созданную в предыдущем семестре в СУБД MySQL. Описать вашу предметную область в отчете, обязательно предоставить схему данных из MySQL Workbench. Возможно вам потребуется заполнить таблицы бОльшим количеством данных для наглядности.
2.Осуществить связь Python и вашей БД в MySQL.
3.Выполнить один запрос на выборку всех данных из одной таблицы на выбор в вашей БД, продемонстрировать результат (вывод таблицы в Python).
4.Выполнить 3 запроса в скрипте Python с использованием агрегатных функций, сортировки, группировки для вашей БД, результаты которых можно представить в виде графика или гистограммы.
Например, в рамках БД с фильмами можно:
•вывести гистограмму среднего рейтинга фильмов по таблице с отзывами,
•выявить топ 5 наиболее популярных фильмов и построить гистограмму с количеством просмотров только этих фильмов,
•посчитать суммарную выручку по каждому фильму за период,
•посчитать выручку по жанрам, просмотры по жанрам и т.д.
Для своей БД вам необходимо самостоятельно придумать полезные запросы, которые могут использоваться для получения той или иной статистики в вашей предметной области.
5. Выполнить визуализацию с помощью Python.
Графики должны быть наглядными, график обязательно должен иметь заголовок, подписи к осям, а также отображать показательные значения (например, название фильма, а не id фильма).
Обязательно сделать графики двух разных видов (примеры: горизонтальная и вертикальная столбчатая диаграмма, групповая столбчатая диаграмма, круговая диаграмма, график). Можно сделать несколько линий на одном графике, при необходимости использовать легенду и любые другие возможности matplotlib.
6. К полученным графикам необходимо дать пояснения, прокомментировать результаты.
Содержание отчета:
1.Титульный лист.
2.Цель работы.
3.Вариант задания (описание вашего варианта: тема работы, описание предметной области, а также схема данных).
4.Ход работы: пояснения по ходу выполнения работы.
4.1Код для запроса на выборку и скриншот результата (пункт 3).
4.2Текстовое описание созданных запросов, SQL-код, скриншоты полученных графиков и пояснения к ним (пункты 4-6).
5. Полный листинг с комментариями (в виде текста, не скриншотами). Выносится в приложение.
6. Вывод в развернутом формате с описанием результатов работы.
7. Список источников.
Все пункты отчета являются обязательными и при отсутствии какого-то из пунктов лабораторная работа либо не будет принята, либо оценка за работу будет снижена. Также в тексте отчетов необходимо приводить пояснения по ходу выполнения работы, обязательно ссылаться в тексте отчета на рисунки, таблицы и листинги.