Python: Numpy
2026-02-26 18:48 Diff

Библиотека Numpy используется в модулях для работы с различными типами данных:

  • Научными данными - SciPy
  • Табличными данными — Pandas
  • Визуализацией данных — Matplotlib, Plotly, Seaborn
  • Алгоритмами машинного обучения — Sklearn
  • Тензорами и глубокими нейронными сетями — TensorFlow
  • Изображениями — OpenCV

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

Рассмотрим недельные данные продаж в сети четырех магазинов:

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

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

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

Раньше в аналитике использовались статические показатели, которые не показывают динамику изменений во времени. А теперь для оценки прироста заказов по дням можно использовать кумулятивные суммы и конечные разности.

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

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

Фиксированная точность в расчетах требует выполнить один из двух вариантов:

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

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

На продажи в магазинах могут влиять разные факторы:

  • Выходные, предпраздничные и праздничные дни
  • Акции
  • Логистические задержки
  • Погода

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

В этих случаях используют статистические методы. Они позволяют оценить влияние факторов на продажи. Аналитики сперва находят статистические показатели:

  • Среднее — какое число продаж можно ожидать, если взять случайный день недели и магазин
  • Отклонение от среднего — насколько сильно реальные показатели могут отличаться от среднего
  • Медиана — значение продаж, в сравнение с которым ровно половина продаж — меньше, а другая половина — больше

Посмотрим, как находить такие показатели:

Более детальный анализ продаж может потребовать использования персентилей. Персентиль N% показывает значение продаж, относительно которого N% продаж меньше. Например, персентиль 50% дает значение продаж, относительно которого в данных ровно 50% значений меньше его. Оно совпадает с медианным значением. Часто используют персентили 25%, 50% и 75%:

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

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

Выводы

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

Эти знания упрощают работу с библиотеками, использующими Numpy. На это есть несколько причин:

  • Интерфейсы многих функций используют принципы построения функций в Numpy
  • В других библиотеках структуры данных — это Numpy-масcивы
  • Методы структур данных можно дополнить методами массивов Numpy с небольшими доработками