Добавил:
t.me Установите расширение 'SyncShare' для решения тестов в LMS (Moodle): https://syncshare.naloaty.me/ . На всякий лучше отключить блокировщик рекламы с ним. || Как пользоваться ChatGPT в России: https://habr.com/ru/articles/704600/ || Также можно с VPNом заходить в bing.com через Edge браузер и общаться с Microsoft Bing Chat, но в последнее время они форсят Copilot и он мне меньше нравится. || Студент-заочник ГУАП, группа Z9411. Ещё учусь на 5-ом курсе 'Прикладной информатики' (09.03.03). || Если мой материал вам помог - можете написать мне 'Спасибо', мне будет очень приятно :) Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
4 курс 1 семестр / Лабораторные / Z9411_КафкаРС_БД_ЛР8.docx
Скачиваний:
6
Добавлен:
24.10.2023
Размер:
299 Кб
Скачать

МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ

федеральное государственное автономное образовательное учреждение высшего образования

«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ»

ИНСТИТУТ НЕПРЕРЫВНОГО И ДИСТАНЦИОННОГО ОБРАЗОВАНИЯ

КАФЕДРА 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

  1. Цель работы

Произвести связь базы данных в PostgreSQL и Python, изучить операции по манипулированию с данными БД, выполнить анализ данных в БД с помощью визуализации в Python.

  1. Вариант задания

В качестве темы работы используется БД, созданная в ЛР 6 (employees, departments, jobs).

Схема данных представлена на рисунке 1.

Рисунок 1 – Схема данных

Вариант задания №9.

Формулировка запросов:

  1. По оси х – фамилия имя менеджера, по оси у – минимальная зарплата по отделу, в котором этот менеджер главный.

  2. Найти количество сотрудников, в должности которых фигурирует слово «Manager», найти количество сотрудников, в должности которых фигурирует «Clerk», найти количество сотрудников, в должности которых фигурирует «President», построить гистограмму с 4 столбцами (Manager, Clerk, President, Other), по оси у – максимальная зарплата сотрудников по каждой группе.

  3. Выполнить модификацию первых двух графиков:

    1. Сделать гистограмму горизонтальной (поменять х и у), изменить цвета,

    2. Создать процедуру/функцию, которая позволит строить графики для любого числа в условии.

    3. Построить любой график, используя locations.

  1. Ход работы

    1. Запрос 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 больше всего зарплата – что не удивительно, он же президент. А внизу обитают клерки.

Соседние файлы в папке Лабораторные