$ sudo teach IT

Файл для практики

month,sales,advertising,orders
1,12000,1000,50
2,13500,1200,65
3,17000,1500,80
4,15000,1400,75
5,21000,1800,120
6,23000,2000,140
7,25000,2300,160
8,24000,2200,150
9,27000,2600,180
10,29000,2800,200
11,31000,3000,220
12,35000,3400,260

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

А теперь представьте другую ситуацию. У вас есть данные о расходах на рекламу и выручке компании. Возникает вопрос: существует ли связь между этими показателями? Увеличение рекламного бюджета действительно приводит к росту продаж или нет?

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

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

Что вы узнаете в рамках статьи

  • Для чего используются линейные графики.
  • Как строить графики с помощью функции plot().
  • Что такое диаграмма рассеяния.
  • Как использовать функцию scatter().
  • Как менять цвет и размер точек.
  • Как находить закономерности в данных.
  • Как выявлять тренды.
  • Когда использовать линии, а когда точки.

Ключевые термины

  • Линейный график — график, соединяющий точки линией и показывающий изменение показателя.
  • Диаграмма рассеяния — график, отображающий набор отдельных точек.
  • Тренд — общее направление изменения данных.
  • Корреляция — взаимосвязь между двумя признаками.
  • Точка данных — отдельное наблюдение на графике.
  • Matplotlib — библиотека Python для построения визуализаций.

Когда используются линейные графики

Линейные графики являются одним из самых популярных инструментов аналитики. Их основная задача — показать изменение показателя во времени или в определенной последовательности.

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

Первый линейный график

Построим график продаж по месяцам.

import matplotlib.pyplot as plt

months = ["Янв", "Фев", "Мар", "Апр", "Май"]
sales = [12000, 13500, 17000, 15000, 21000]

plt.plot(months, sales)

plt.show()


Функция plot() строит точки и автоматически соединяет их линиями. Полученный график позволяет быстро увидеть динамику продаж. Даже без детального анализа становится заметно, что в целом продажи растут, хотя в апреле наблюдается небольшое снижение.

Добавляем оформление

Чтобы график был понятен другим людям, рекомендуется сразу добавлять подписи и заголовок.

import matplotlib.pyplot as plt

months = ["Янв", "Фев", "Мар", "Апр", "Май"]
sales = [12000, 13500, 17000, 15000, 21000]

plt.plot(months, sales)

plt.title("Продажи по месяцам")
plt.xlabel("Месяц")
plt.ylabel("Выручка")

plt.show()

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

Настройка маркеров

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

import matplotlib.pyplot as plt

months = ["Янв", "Фев", "Мар", "Апр", "Май"]
sales = [12000, 13500, 17000, 15000, 21000]

plt.plot(months, sales, marker="o")

plt.show()

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

В данном примере используется маркер "o", который отображается в виде круга. Matplotlib поддерживает множество других вариантов маркеров: квадраты, треугольники, ромбы, звезды, крестики и многие другие. Полный список доступных маркеров можно посмотреть в официальной документации Matplotlib: Список маркеров Matplotlib.

На практике чаще всего используются маркеры "o", "s", "^", "D" и "x", поскольку они хорошо читаются даже на небольших графиках.

Что такое диаграмма рассеяния

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

Реклама    Выручка
1000       12000
1500       14000
2000       17000
2500       19000
3000       22000

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

Первая диаграмма рассеяния

Построим график.

import matplotlib.pyplot as plt

advertising = [1000, 1500, 2000, 2500, 3000]
revenue = [12000, 14000, 17000, 19000, 22000]

plt.scatter(advertising, revenue)

plt.show()

Каждая точка представляет отдельное наблюдение. По оси X располагаются рекламные расходы. По оси Y — выручка. В отличие от линейного графика точки не соединяются между собой. Это позволяет анализировать взаимосвязь между переменными.

Интерпретация диаграммы рассеяния

После построения графика необходимо понять, что он показывает.

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

Именно поэтому диаграммы рассеяния широко используются в аналитике и машинном обучении.

Размер точек

Иногда полезно отображать дополнительную информацию через размер точек. Рассмотрим пример. Пусть размер точки показывает количество заказов.

import matplotlib.pyplot as plt

advertising = [1000, 1500, 2000, 2500, 3000]
revenue = [12000, 14000, 17000, 19000, 22000]

orders = [50, 80, 120, 150, 200]

plt.scatter(
    advertising,
    revenue,
    s=orders
)

plt.show()

Параметр s отвечает за размер точек. Чем больше значение, тем крупнее будет отображаться точка. Таким образом один график может отображать сразу три показателя. Однако использовать подобные возможности стоит аккуратно. Если одновременно кодировать информацию через положение, размер и цвет точек, график может стать сложным для восприятия. Добавляйте дополнительные визуальные параметры только тогда, когда они действительно помогают лучше понять данные, а не перегружают визуализацию.

Цвет точек

Еще один способ добавить информацию — использовать цвет.

import matplotlib.pyplot as plt

advertising = [1000, 1500, 2000, 2500, 3000]
revenue = [12000, 14000, 17000, 19000, 22000]

plt.scatter(
    advertising,
    revenue,
    color="red"
)

plt.show()

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

Когда использовать линии, а когда точки

Это один из самых частых вопросов начинающих аналитиков. Ответ зависит от характера данных.

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

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

Сравнение двух подходов

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

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

Наиболее частые ошибки

  • Использование линейного графика для несвязанных наблюдений
    Линии могут создавать ложное ощущение зависимости.
  • Использование scatter вместо plot для временных рядов
    Тренды становятся менее заметными.
  • Слишком большие точки
    График становится перегруженным.
  • Отсутствие подписей осей
    Зритель не понимает смысл графика.
  • Использование слишком большого количества цветов
    Визуализация становится сложной для восприятия.

Наиболее частые вопросы

  • Можно ли использовать plot() без времени на оси X?
    Да, если между наблюдениями существует логическая последовательность.
  • Когда scatter лучше plot()?
    Когда нужно исследовать связь между двумя числовыми признаками.
  • Можно ли менять форму маркеров?
    Да, через параметр marker.
  • Можно ли отображать дополнительную информацию через размер точек?
    Да, для этого используется параметр s.
  • Всегда ли наличие тренда означает причинно-следственную связь?
    Нет. Тренд показывает закономерность, но не доказывает причину изменений.

Итоги

В этом уроке вы познакомились с двумя важными инструментами визуализации данных — линейными графиками и диаграммами рассеяния. Мы научились строить графики с помощью функций plot() и scatter(), настраивать маркеры, размер и цвет точек, а также анализировать тренды и зависимости между показателями.

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

На следующий урок