Зарегистрируйтесь, чтобы продолжить обучение

Агрегация для Scatter Chart Продвинутая аналитика на SQL

В этом уроке мы узнаем, что такое точечные диаграммы и какие они бывают. Мы агрегируем данные для точечной диаграммы продаж и прибыли, а также для пузырьковой диаграммы.

Точечные диаграммы отличаются тем, что их легко читать, значит, со знаниями о точечных диаграммах вы сможете строить отчеты для широкого круга людей.

Точечная диаграмма

Представим, что у нас есть таблица средних продаж и прибыли по категориям товаров:

avg_sales_profit

sub_category avg_sales avg_profit
Paper 48.528 20.626
Labels 37.383 16.902
Storage 266.969 24.160
... ... ...

В этой таблице мы видим три столбца:

  • sub_category — категория товара
  • avg_sales — средние продажи по категориям товаров
  • avg_profit — средняя прибыль по категориям товаров

По этой таблице мы хотим выявить взаимосвязь между средними продажами и средней прибылью. Для визуализации этой взаимосвязи хорошо подходят точечные диаграммы или Scatter chart.

Посмотрим, как выглядит точечная диаграмма:

sales_profit_scatter_chart

На точечной диаграмме, которая изображает связь прибыли и продаж, мы видим по горизонтальной оси переменную avg_sales, а по вертикальной — avg_profit.

Точечные диаграммы используют для отображения отношения двух переменных, например, роста и веса людей или прибыли и продаж. Каждая пара значений двух переменных — это одна точка, где по оси X одна переменная, а по оси Y — вторая.

С помощью точечной диаграммы мы можем выявить, как связаны две переменные, а также определить тенденции и закономерности. Одно из основных преимуществ точечных диаграмм — это легкость в их чтении. Их легко понимают люди, работа которых не связана с данными.

Мы выделим два вида точечных диаграмм:

  1. Обычная точечная диаграмма или Scatter chart. Она состоит из точек, координаты которых — это пары значений наших двух переменных
  2. Пузырьковая диаграмма или Bubble chart. Она состоит из «пузырьков», координаты которых — пары значений наших переменных, а размер пузырька определяется третьей переменной

Посмотрим, как выглядит пузырьковая диаграмма для продаж и прибыли, где размер пузырька — это количество проданных товаров:

sales_profit_bubble_chart

На рисунке видно, что взаимосвязь прибыли и продаж такая же, как на точечной диаграмме, но размер пузырька еще зависит от третьей переменной.

Точечные диаграммы отображают взаимосвязь двух переменных, но это необязательно причинно-следственная связь. Например, если мы решили изобразить связь между ростом и весом разных людей, это не значит, что одна из этих переменных зависит от другой. Такая зависимость может быть, но не всегда.

Теперь мы перейдем к практике и агрегируем данные для точечной диаграммы продаж и прибыли.

Агрегация для точечной диаграммы

Мы будем работать с базой данных scatter_chart. В ней содержится одна таблица sales:

Sales

order_id order_date ship_date ship_mode customer_id customer_name segment country city state postal_code region product_id category sub_category product_name sales quantity discount profit
CA-2014-103800 2014-01-03 00:00:00 2014-01-07 00:00:00 Standard Class DP-13000 Darren Powers Consumer United States Houston Texas 77095 Central OFF-PA-10000174 Office Supplies Paper Message Book, Wirebound, Four 5 1/2" X 4" Forms/Pg., 200 Dupl. Sets/Book 16.448 2 0.2 5.551199999999998
CA-2014-112326 2014-01-04 00:00:00 2014-01-08 00:00:00 Standard Class PO-19195 Phillina Ober Home Office United States Naperville Illinois 60540 Central OFF-LA-10003223 Office Supplies Labels Avery 508 11.784 3 0.2 4.271699999999999
CA-2014-112326 2014-01-04 00:00:00 2014-01-08 00:00:00 Standard Class PO-19195 Phillina Ober Home Office United States Naperville Illinois 60540 Central OFF-ST-10002743 Office Supplies Storage SAFCO Boltless Steel Shelving 272.736 3 0.2 -64.77480000000001
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...

В таблице мы видим такие столбцы:

  1. order_id — ID заказа
  2. order_date — дата заказа
  3. ship_date — дата отгрузки товара
  4. ship_mode — класс отгрузки
  5. customer_id — ID покупателя
  6. customer_name — имя покупателя
  7. segment — категория покупателя
  8. country — страна
  9. city — город
  10. state — штат/округ
  11. postal_code — почтовый индекс
  12. region — регион
  13. product_id — ID товара
  14. category — категория товара
  15. sub_category — подкатегория товара
  16. product_name — наименование товара
  17. sales — сумма продаж по заказу
  18. quantity — количество единиц товара в заказе
  19. discount — скидка на заказ
  20. profit — прибыль по заказу

Мы хотим агрегировать продажи sales и прибыль profit по подкатегориям товаров sub_category, чтобы получить средние продажи и прибыль. Для этого мы используем агрегацию по подкатегориям с помощью GROUP BY и агрегирующую функцию AVG, чтобы вычислить среднее.

Напишем такой SQL-запрос:

SELECT
    sub_category,
    AVG(sales) AS avg_sales,
    AVG(profit) AS avg_profit
FROM sales
GROUP BY sub_category;

С помощью этого запроса мы получили таблицу со средними продажами и прибылью по подкатегориям товаров:

avg_sales_profit

sub_category avg_sales avg_profit
Paper 48.5276204379562 20.62626131386861
Labels 37.38331428571429 16.901582857142856
Storage 266.96887179487175 24.15990897435896
Binders 132.1178703703703 5.271685802469117
Art 27.38510679611649 7.105900000000001
Chairs 548.9535254237287 49.37576440677966
Phones 438.3023181818182 73.59770113636361
Fasteners 15.223200000000004 3.281847999999999
Furnishings 78.89840000000001 13.83537529411765
Accessories 184.5233333333333 48.41520555555552
Envelopes 72.99372727272727 28.905886363636363
Bookcases 372.6196444444444 -13.928205555555556
Appliances 162.62564285714285 28.71635476190476
Tables 602.0913625000001 -48.64985750000001
Supplies 681.0692631578945 25.92234736842104
Machines 2983.788555555556 -168.7506333333336
Copiers 884.9813333333335 224.9953833333333

Ссылка на таблицу

Скопируем эту таблицу в Google Sheets и построим точечный график. Для этого нужно выбрать тип диаграммы «Точечная диаграмма». Мы получили такую диаграмму:

sales_profit_scatter_chart

На этом графике мы построили взаимосвязь между средней прибылью и продажами. Мы можем видеть, что в среднем чем выше продажи, тем выше прибыль. Однако также мы можем видеть и выбросы.

Теперь попробуем построить пузырьковую диаграмму. В качестве третьей переменной, от которой будет зависеть размер пузырька, мы возьмем quantity — это количество единиц одного товара. Для этого нужно изменить запрос так, чтобы кроме средних продаж и прибыли он выводил и суммарное количество единиц товара:

SELECT
    sub_category,
    AVG(sales) AS avg_sales,
    AVG(profit) AS avg_profit,
    SUM(quantity) AS sum_quantity
FROM sales
GROUP BY sub_category;

В результате мы получили новую таблицу:

SalesProfitQuantity

sub_category avg_sales avg_profit sum_quantity
Paper 48.5276204379562 20.62626131386861 494
Labels 37.38331428571429 16.901582857142856 144
Storage 266.96887179487175 24.15990897435896 300
Binders 132.1178703703703 5.271685802469117 634
Art 27.38510679611649 7.105900000000001 398
Chairs 548.9535254237287 49.37576440677966 232
Phones 438.3023181818182 73.59770113636361 353
Fasteners 15.223200000000004 3.281847999999999 117
Furnishings 78.89840000000001 13.83537529411765 311
Accessories 184.5233333333333 48.41520555555552 292
Envelopes 72.99372727272727 28.905886363636363 83
Bookcases 372.6196444444444 -13.928205555555556 76
Appliances 162.62564285714285 28.71635476190476 129
Tables 602.0913625000001 -48.64985750000001 144
Supplies 681.0692631578945 25.92234736842104 63
Machines 2983.788555555556 -168.7506333333336 31
Copiers 884.9813333333335 224.9953833333333 15

Ссылка на таблицу

В этой таблице четыре столбца:

  • sub_category — подкатегория товаров
  • avg_sales — средние продажи для подкатегории товаров
  • avg_profit — средняя прибыль для подкатегории товаров
  • sum_quantity — суммарное количество всех проданных товаров по одной подкатегории

Теперь скопируем эту таблицу в Google Sheets и построим диаграмму. В качестве типа выберем «Пузырьковая диаграмма». В настройках в поле «Размер» выберем параметр sum_quantity. И отключим легенду в «Дополнительные» -> «Легенда» -> «Расположение» -> «Не выбрано». Новая диаграмма будет выглядеть так:

sales_profit_bubble_chart

Мы построили пузырьковую диаграмму продаж и прибыли. Размер пузырька определяется суммарным количеством проданных товаров в одной подкатегории. Если мы видим, что продажи и прибыль большие, а размер пузырька маленький, то товары в этой подкатегории дорогостоящие.

Выводы

В этом уроке мы рассмотрели точечную диаграмму и ее разновидность — пузырьковую диаграмму. Мы разобрали особенности каждого типа диаграмм, агрегировали данные для точечной и пузырьковой диаграмм и построили их.

Точечные диаграммы позволяют выявлять тенденции и закономерности в данных, искать выбросы, а также их легко читать. Точечные диаграммы могут стать незаменимым инструментом в работе дата аналитиком.


Самостоятельная работа

Для самостоятельной работы используйте базу данных из урока. Агрегируйте продажи sales и прибыль profit по штатам state и получите средние продажи и прибыль по штатам. По этим данным постройте точечную диаграмму. Также добавьте в агрегацию суммарное количество товаров quantity по штатам. Какие закономерности вы видите? Какие штаты самые убыточные?

Для полного доступа к курсу нужен базовый план

Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
1000
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff