Функция, которая позволит строить графики для любого числа в условии.
Листинг 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 – Вывод средней зарплаты по городу