Python: Numpy
Теория: Применение математических и статистических функций
Библиотека 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 с небольшими доработками

