
- •Цель работы
- •Вариант задания
- •Ход работы
- •Запрос 1
- •Запрос 2
- •Сделать гистограмму горизонтальной и изменить цвета для предыдущих графиков
- •Функция, которая позволит строить графики для любого числа в условии.
- •Построить любой график, используя locations
- •Заключение
- •Список использованных источников
МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
федеральное государственное автономное образовательное учреждение высшего образования
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ»
ИНСТИТУТ НЕПРЕРЫВНОГО И ДИСТАНЦИОННОГО ОБРАЗОВАНИЯ
КАФЕДРА 41
|
ОЦЕНКА
ПРЕПОДАВАТЕЛЬ
канд.тех.наук, доцент |
|
|
|
Е. Л. Турнецкая |
должность, уч. степень, звание |
|
подпись, дата |
|
инициалы, фамилия |
ОТЧЕТ О ЛАБОРАТОРНОЙ РАБОТЕ №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 больше всего зарплата – что не удивительно, он же президент. А внизу обитают клерки.