Сегодня вашему вниманию представлена аналитика (исследование) алкогольной продукции сети магазинов «Лента» (далее - Лента), находящаяся в каталоге на официальном сайте компании.
![](https://habrastorage.org/getpro/habr/upload_files/fcb/500/550/fcb5005501ce04d1944db1e6532b811e.png)
Планирование, подготовка, выборка
Почему выбор пал на алкогольную продукцию и на эту компанию? Да очень всё просто - первое, что пришло в голову (да, такое бывает) и большой ассортимент данного сегмента. Думаю в дальнейшем будет аналитика продукции других компаний. Но вернёмся к нашим бутылкам элементам исследования. Предварительно изучив структуру самого сайта компании приходим к выводу, что каталог продукции динамичен в зависимости от места расположения объекта продаж и изменением ассортимента. Выборку было решено взять по г. Москва, в гипермаркетах. Конечно же не обладая точными данными ассортимента алкогольной продукции компании нельзя сказать, что она репрезентативная, но всё же полагаем, что всё ок. Изучив количество единиц продукции в каталогах на сайте по точкам продаж получаем, что в среднем одинаково, вотЪ.
Инструменты для аналитики
Как любой себя уважающий senior data analyst джун в нашем исследовании мы будем применять стандартные инструменты для этого - язык программирования python 3+, библиотеки pandas для анализа и обработки данных, библиотеки BeautifulSoup, request, csv, lxml для парсинга, библиотеки seaborn, matplotlib, plotly для визуализации результата, всё это находится в нашей любимой Anaconda, в которой JupyterLab и Jupyternotebook, плюс родные и добрые таблицы google sheets(возможно понадобятся) и конечно же не забудем про свой brain.
Получение данных для исследования
Данные мы будем получать конечно же с помощью нашего любимого автоматизированного процесса сбора данных (о как !) или более проще - парсинга (скрапинга). Парсинг будет осуществляться посредством скрипта на питОне (python). Для написания скрипта пришлось где-то почитать, где-то посмотреть, где-то «прихватить» (да простите меня товарищи). Код скрипта можно посмотреть тут.
Процесс парсинга
Итак, заходим на сайт подопытного объекта исследования и включаем в браузере режим разработчика, находим нужные нам классы и категории и прописываем (подставляем) их в коде. Кстати, у нас получилось 101 страница в каталоге. Запускаем процесс парсинга в Jupyter и ждём когда файл наполнится данными.
![](https://habrastorage.org/getpro/habr/upload_files/191/464/12d/19146412d0b59f8d4ebc82c060c1d2d0.png)
![](https://habrastorage.org/getpro/habr/upload_files/be4/705/344/be4705344ad26f6e3af976e9853882f2.png)
Процесс подготовки и обработки данных
Следующий шаг это открытие файла .csv в нашем сатурне джупИтире и краткая информация о самом датафрейме, для этого импортируем библиотеки, с запасом.
![](https://habrastorage.org/getpro/habr/upload_files/a27/6a1/0fc/a276a10fc5eb1e977a85439ed5955099.png)
Как мы видим, у нас есть данные (числа) с пробелами. Поэтому, как завещал великий (ну почти) Карл Андерсон в своей книги “Аналитическая культура” нам нужны правильные данные, собранные правильным образом, в правильной форме, в правильном месте, в правильное время. Для этого применяем всю “мощь” библиотек в python для анализа. На самом деле основную работу сделал код скрипта парсинга, там был прописаны методы strip() и replace(), которые удалили лишние пробелы, переносы и символ рубля ?.
![](https://habrastorage.org/getpro/habr/upload_files/829/de4/b5e/829de4b5e475a44daaaa3d9be12bafdf.png)
Пробел в числах в поле price был идентифицирован как символ \xa0 - неразрывный пробел, элемент компьютерной кодировки текстов (подробнее тут). Далее с помощью метода replace() удаляем его и с помощью astype(float) меняем формат столбцов в float и у нас получается нормальный формат цены товара.
![](https://habrastorage.org/getpro/habr/upload_files/4f7/039/c26/4f7039c2659b1fd284809621502ab406.png)
Процесс анализа данных
Далее с помощью describe() узнаем краткие описательные статистики. Как мы видим среднее значение равное 986.78 руб. в цене без скидки, медиана равна 631.59 руб.
![](https://habrastorage.org/getpro/habr/upload_files/682/fc8/295/682fc8295bc44b3e522b56d76f61d7d1.png)
Построим гистограмму c помощью библиотеки matplotlib и увидим распределение, в параметрах прологарифмируем переменную. Как мы видим на гистограмме основная цена на алкогольную продукцию в пределах до 2400 руб, есть много выбросов.
![](https://habrastorage.org/getpro/habr/upload_files/c2e/bcc/341/c2ebcc341456b8db4923395585c26b26.png)
Для углубленного анализа построим график boxplot от библиотеки plotly. Теперь мы видим, что подавляющее значение выбросов начинается от 2420 руб. А самым большим выбросом оказался коньяк Hennessy XO за 16209 руб. С помощью метода sort_value() узнаем пятерку самого дорогого алкоголя в Ленте.
![](https://habrastorage.org/getpro/habr/upload_files/446/985/74c/44698574cdd25e146504ea2250c85329.png)
![](https://habrastorage.org/getpro/habr/upload_files/dfe/a4e/393/dfea4e39325481eb8f1a92a49b971cf2.png)
Напомню, что цены и ассортимент динамичны, поэтому всё может изменяться каждый день.
Благодарю за внимание, всем всего наилучшего, ваш konstatic.
Win08
А сортировка по "Цена по убыванию" разве не тот же самый результат дает?