МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
федеральное государственное автономное образовательное учреждение высшего образования
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ»
ИНСТИТУТ НЕПРЕРЫВНОГО И ДИСТАНЦИОННОГО ОБРАЗОВАНИЯ
КАФЕДРА 41 |
ОЦЕНКА
ПРЕПОДАВАТЕЛЬ
кандидат техн. наук |
|
|
|
Е.Л. Турнецкая |
должность, уч. степень, звание |
|
подпись, дата |
|
инициалы, фамилия |
ОТЧЕТ О ЛАБОРАТОРНОЙ РАБОТЕ №1
|
||||
Связь СУБД MySQL и Python. Визуализация данных в Python. |
||||
по курсу: БАЗЫ ДАННЫХ |
РАБОТУ ВЫПОЛНИЛ
СТУДЕНТ ГР. № |
Z9411 |
|
|
|
А.С.Чурилов |
|
номер группы |
|
подпись, дата |
|
инициалы, фамилия |
Студенческий билет № 2019/3684
Санкт-Петербург 2023
Цель работы:
Произвести связь базы данных в MySQL и Python, извлечь данные из таблиц базы данных и выполнить анализ данных в БД с помощью визуализации в Python.
Ход работы:
Телевизионная компания
Вы являетесь руководителем коммерческой службы телевизионной компании. Вашей задачей является отслеживание расчетов, связанных с прохождением рекламы в телеэфире. Работа построена следующим образом: заказчики просят поместить свою рекламу в определенной передаче в определенный день. Каждый рекламный ролик имеет определенную продолжительность. Для каждой организации–заказчика известны банковские реквизиты, телефон и контактное лицо для проведения переговоров. Передачи имеют определенный рейтинг. Стоимость минуты рекламы в каждой конкретной передаче известна (определяется коммерческой службой, исходя из рейтинга передачи и прочих соображений). Также необходимо хранить информацию об агентах, заключивших договоры на рекламу. Зарплата рекламных агентов составляет некоторый процент от общей стоимости рекламы, прошедшей в эфире.
Схема данных (Рисунок 1).
Рисунок 1 – Схема данных
Связал Python с базой данных и вывел таблицу (Листинг 1, Рисунок 2).
Листинг 1 – Подключение БД и вывод таблицы
import pandas as pd import pymysql.cursors import matplotlib.pyplot as plt import matplotlib.dates as dates
def test(): with connection.cursor() as cursor: sql = "select * from customer" # Выполнение команды запроса (Execute Query) cursor.execute(sql)#выполняет запрос rows = cursor.fetchall()#получает результат df = pd.DataFrame(rows) #выводит запрос connection.close()
print(df)
try: connection = pymysql.connect( host='127.0.0.1', port=3306, user='root', password=admin, db='tv', cursorclass=pymysql.cursors.DictCursor) print('connection successful') except Exception as ex: print('connection lost...') print(ex) |
Рисунок 2 – Вывод таблицы
Запрос с агрегатной функцией – подсчет кол-во строк в таблице (Листинг 2, Рисунок 3).
Листинг 2 – Код запроса с агрегатной функцией
sql = "select count(*) from customer;" |
Рисунок 3 – Агрегатные функции
Запрос с сортировкой – данная команда осуществляет поиск по столбцу с процентом, выводит значения, где процент больше 16 (Листинг 3, Рисунок 4).
Листинг 3 – Запрос с сортировкой
sql = " SELECT * FROM agent where Agent_Percent>16 order by agent.agent_id;;" |
Рисунок 4 – Сортировка
Запрос с группировкой – единичный вывод данных из таблицы (Листинг 4, Рисунок 5).
Листинг 4 – Запрос с группировкой
select * from customer group by customer_id |
Рисунок 5 – Группировка
С помощью pyplot создал графики с процентом, который берет организация (Листинг 5-6, Рисунок 6-7).
Листинг 5 – Запрос на график
with connection.cursor() as cursor: sql = "select agent_lastName, agent_percent from agent ;" cursor.execute(sql) rows = cursor.fetchall() df = pd.DataFrame(rows) connection.close()
print(df)
plt.figure() plt.tick_params(axis='x', rotation=90) plt.bar(df['agent_lastName'],df['agent_percent'], color="yellow") plt.title('Процентная ставка') plt.xlabel('Агент') plt.ylabel('Ставка ') plt.tick_params(axis='x', rotation=90) plt.show() |
Рисунок 6 – Процентная ставка
Листинг 6 – Запрос на график
plt.pie(df['agent_percent'],labels=df['agent_lastName']) plt.show() |
Рисунок 7 – Процентная ставка
Вывод:
В данной лабораторной работе подключили БД MySQL Workbench с помощью языка программирования Python, реализовал несколько запросов, которые были непосредственно связаны с таблицами, и построил графики по опять же данным таблицам.