Добавил:
t.me Инфо для ГУАП студентов от меня: https://kafaka.notion.site/99e6d9b70ca74f7baef3daea17839e5a Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Чурилов / 4 курс / Базы_данных_Чурилов_Z9411_КР.docx
Скачиваний:
8
Добавлен:
10.11.2024
Размер:
391.48 Кб
Скачать

5 Обработка и визуализация данных

Выполним обработку данных и визуализируем результаты инструментами языка программирования Python.

Код подключения языка программирования Python к Workbench представлен в листинге 42.

Листинг 42 – Код подключения

import pandas as pd

import matplotlib.pyplot as plt

import pymysql.cursors

if __name__ == '__main__':

    connection = pymysql.connect(host = '127.0.0.1',

                    user = 'root',

                    password = 'admin',

                    db ='ad',

                    charset ='utf8mb4',

                    cursorclass = pymysql.cursors.DictCursor)

Был написан код для обработки данных и визуализации соотношения совершенных агентами сделок, сколько каждый из них заключил договоров. Код обработки и визуализации данных представлен в листинге 43. График популярности представлен на рисунке 39. Данный график полезен администрации компании, например, для выписки премии особо активным по заключениям договоров агентам, а также для заказчиков – для выбора профессионального агента.

Листинг 43 – Код обработки и визуализации данных совершенных агентами сделок

with connection.cursor() as cursor:

    sql = "select agent.agent_lastname as AgentName, count(contract.contract_id) as CountOfContracts from agent, contract where contract.agent_id = agent.agent_id group by agent.agent_lastname"

    cursor.execute(sql)

    rows = cursor.fetchall()

    df = pd.DataFrame(rows)

    connection.close()

print(df)

fig, ax = plt.subplots()

plt.title('Количество сделок')

plt.tick_params(axis='x',rotation=90)

plt.pie(df['CountOfContracts'], labels=df['AgentName'])

plt.tight_layout()

plt.show()

Рисунок 39 – График совершенных агентами сделок

Был написан код для обработки данных и визуализации. Код обработки и визуализации данных показов реклам заказчиков представлен в листинге 44. График показов представлен на рисунке 40. На основе этого графика администрация компании сможет проанализировать статистику по просмотрам реклам.

Листинг 44 – Код обработки и визуализации данных о времени реклам

with connection.cursor() as cursor:

    sql = "select customer.customer_contactperson as CustomerName, count(contract.ad_id)*ad.ad_duration as Showing from ad, contract, customer where contract.ad_id = ad.ad_id and contract.customer_id = customer.customer_id group by customer.customer_id"

    cursor.execute(sql)

    rows = cursor.fetchall()

    df = pd.DataFrame(rows)

    connection.close()

print(df)

fig, ax = plt.subplots()

plt.title('Время рекламы')

ax.set_xlabel('Заказчики')

ax.set_ylabel('Время рекламы')

plt.tick_params(axis='x',rotation=90)

plt.bar(df['CustomerName'], df['Showing'])

plt.tight_layout()

plt.show()

Рисунок 40 – График времени реклам

Построим график, демонстрирующий количество заключенных договоров относительно рейтинга программ. Код обработки и визуализации данных о количестве осмотров домов представлен в листинге 45. График популярности представлен на рисунке 41. Для компании этот график демонстрирует популярность их программ для заказа рекламы.

Листинг 45 – Код обработки и визуализации данных о количестве заключенных договоров относительно рейтинга программ

with connection.cursor() as cursor:

    sql = "select tv_show.tv_rating as Rating, count(contract.tv_id) as CountOfContracts from tv_show, contract where contract.tv_id = tv_show.tv_id group by contract.tv_id order by Rating"

    cursor.execute(sql)

    rows = cursor.fetchall()

    df = pd.DataFrame(rows)

    connection.close()

print(df)

fig, ax = plt.subplots()

plt.title('Количество договоров относительно рейтинга программ')

ax.set_xlabel('Рейтинг')

ax.set_ylabel('Количество договоров')

plt.tick_params(axis='x',rotation=60)

plt.plot(df['Rating'], df['CountOfContracts'])

plt.tight_layout()

plt.show()

Рисунок 41 – График количества осмотров домов