МИНИСТЕРСТВО НАУКИ
И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ
ФЕДЕРАЦИИ
федеральное
государственное автономное образовательное
учреждение высшего образования
«САНКТ-ПЕТЕРБУРГСКИЙ
ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ»
ИНСТИТУТ
НЕПРЕРЫВНОГО И ДИСТАНЦИОННОГО ОБРАЗОВАНИЯ
ОЦЕНКА
ПРЕПОДАВАТЕЛЬ
канд.тех.наук,
доцент
|
|
|
|
Е. Л. Турнецкая
|
должность,
уч. степень, звание
|
|
подпись,
дата
|
|
инициалы,
фамилия
|
ОТЧЕТ О ЛАБОРАТОРНОЙ РАБОТЕ №8
|
ВИЗУАЛИЗАЦИЯ
ДАННЫХ ИЗ СУБД POSTGRESQL В PYTHON
|
по дисциплине:
Базы данных
|
РАБОТУ ВЫПОЛНИЛ
СТУДЕНТ ГР. №
|
Z9411
|
|
|
|
Р. С. Кафка
|
|
номер
группы
|
|
подпись,
дата
|
|
инициалы,
фамилия
|
Студенческий
билет №
|
2019/3603
|
|
|
|
Санкт-Петербург
2023
СОДЕРЖАНИЕ
1.
Цель работы 3
2.
Вариант задания 3
3.
Ход работы 5
3.1.
Запрос 1 5
3.2.
Запрос 2 7
3.3.
Сделать гистограмму горизонтальной и
изменить цвета для предыдущих графиков 9
3.5.
Построить любой график, используя
locations 14
ЗАКЛЮЧЕНИЕ 16
СПИСОК
ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 17
Цель работы
Произвести связь
базы данных в PostgreSQL и Python, изучить
операции по манипулированию с данными
БД, выполнить анализ данных в БД с помощью
визуализации в Python.
Вариант задания
В качестве темы
работы используется БД, созданная в ЛР
6 (employees, departments,
jobs).
Схема данных
представлена на рисунке 1.
Рисунок
1 – Схема данных
Вариант задания
№9.
Формулировка
запросов:
По оси х – фамилия
имя менеджера, по оси у – минимальная
зарплата по отделу, в котором этот
менеджер главный.
Найти количество
сотрудников, в должности которых
фигурирует слово «Manager», найти количество
сотрудников, в должности которых
фигурирует «Clerk», найти количество
сотрудников, в должности которых
фигурирует «President»,
построить гистограмму с 4 столбцами
(Manager, Clerk,
President, Other),
по оси у – максимальная зарплата
сотрудников по каждой группе.
Выполнить
модификацию первых двух графиков:
Сделать гистограмму
горизонтальной (поменять х и у), изменить
цвета,
Создать
процедуру/функцию, которая позволит
строить графики для любого числа в
условии.
Построить любой
график, используя locations.
Ход работы
Запрос 1
По оси х – фамилия
имя менеджера, по оси у – минимальная
зарплата по отделу, в котором этот
менеджер главный. Код представлен в
листинге 1. Результат представлен на
рисунке 2.
Листинг 1 – Вывод
минимальной зарплаты по менеджерам
-
import
psycopg2
import
pandas as pd
import
matplotlib.pyplot as plt
#
Connect to the database
conn
= psycopg2.connect(database="students",
user="postgres", password="123",
host="127.0.0.1", port="5432")
cursor
= conn.cursor()
#
Run the SQL query
query
= "SELECT e.department_id, MIN(e.salary) as min_salary,
m.last_name as manager_last_name " \
"FROM
employees e " \
"JOIN
employees m ON e.manager_id = m.employee_id " \
"GROUP
BY e.department_id, m.last_name "
cursor.execute(query)
#
Fetch the result and store it in a Pandas dataframe
result
= cursor.fetchall()
df
= pd.DataFrame(result, columns=["department_id",
"min_salary", "manager_last_name"])
#
Plot the data
plt.bar(df["manager_last_name"],
df["min_salary"])
plt.xlabel("Фамилия
менеджера")
plt.ylabel("Минимальная
заработная плата")
plt.title("Минимальная
зарплата по менеджерам")
plt.show()
#
Close the cursor and connection
cursor.close()
conn.close()
|
Этот код сначала
подключается к базе данных, затем
выполняет SQL-запрос, который извлекает
минимальную зарплату для каждого отдела
на основе идентификатора менеджера, и
сохраняет результат в рамке данных
Pandas. Наконец, он строит гистограмму с
фамилией менеджера на оси x и минимальной
зарплатой на оси y.
Рисунок
2 – Вывод минимальной зарплаты по
менеджерам
По результатам
графика можно увидеть, что у King
больше всего зарплата – что не удивительно,
он же президент. А внизу обитают клерки.