
- •Цель работы
- •Вариант задания
- •Ход работы
- •Запрос 1
- •Запрос 2
- •Сделать гистограмму горизонтальной и изменить цвета для предыдущих графиков
- •Функция, которая позволит строить графики для любого числа в условии.
- •Построить любой график, используя locations
- •Заключение
- •Список использованных источников
Функция, которая позволит строить графики для любого числа в условии.
Листинг 5 - Функция, которая позволит строить графики для любого числа в условии
-
import psycopg2
import pandas as pd
import matplotlib.pyplot as plt
def graph_column(column_name):
# 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.{}) as min_value, 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 ".format(column_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_value", "manager_last_name"])
# Plot the data
plt.bar(df["manager_last_name"], df["min_value"])
plt.xlabel("Manager Last Name")
plt.ylabel("Minimum {}".format(column_name))
plt.title("Minimum {} by Manager".format(column_name))
plt.show()
# Close the cursor and connection
cursor.close()
conn.close()
graph_column('salary')
Эта функция принимает аргумент column_name, который является именем столбца, по которому вы хотите построить график. Затем функция создает SQL-запрос, который извлекает минимальное значение для этого столбца, сгруппированное по отделам и менеджерам. Результат запроса сохраняется в рамке данных Pandas, а затем выводится в виде гистограммы.
Рисунок
6 – Функция, которая позволит строить
графики для любого числа в условии
Построить любой график, используя locations
Написал код для вывода средней зарплаты по городу, представлен в листинге 6. Результат представлен на рисунке 7.
Листинг 7 – Вывод средней зарплаты по городу
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 l.city, AVG(e.salary) as avg_salary " \ "FROM employees e " \ "JOIN locations l ON e.location_id = l.location_id " \ "GROUP BY l.city" cursor.execute(query)
# Fetch the result and store it in a Pandas dataframe result = cursor.fetchall() df = pd.DataFrame(result, columns=["city", "avg_salary"])
# Plot the data plt.bar(df["city"], df["avg_salary"]) plt.xlabel("Город") plt.ylabel("Средняя зарплата") plt.title("Средняя зарплата по городу") plt.show()
# Close the cursor and connection cursor.close() conn.close() |
Этот код представляет собой сценарий на языке Python, который подключается к базе данных PostgreSQL, выполняет SQL-запрос, извлекает результат запроса, сохраняет результат в рамке данных Pandas, строит результат в виде гистограммы с помощью matplotlib и закрывает курсор и соединение с базой данных.
Выполненный SQL-запрос объединяет таблицу сотрудников и таблицу мест по столбцу location_id, группирует данные по городам и вычисляет среднюю зарплату для каждого города. Полученные данные хранятся во фрейме данных Pandas с колонками "city" и "avg_salary".
Наконец, сценарий строит график данных с помощью matplotlib, создавая гистограмму с названиями городов по оси x и средней зарплатой по оси y. Ось x обозначена как "Город", а ось y - как "Средняя зарплата". Заголовок диаграммы - "Средняя зарплата по городу".
Рисунок
7 – Вывод средней зарплаты по городу