Блог им. Albus

Качаем цены с Росстата и строим графики

Росстат каждую неделю публикует цены на основные товары из потребительской корзины. Сейчас в ней 112 наименований.
https://www.fedstat.ru/indicator/37426
Данные собираются по всей России. Цены можно посмотреть для каждого региона, вплоть до малых городов. НО! по городам почему-то качается только текущий 2020 год, как бы хитро вы ни выставляли птички в фильтрах. А вот для субъектов Федерации типа г. Москва, Ростовская область все данные отдаются корректно. 
Качаем цены с Росстата и строим графики

Страница грузится долго, сайт глючный, при работе с ним требуется ангельское терпение.
---
Публикую скрипт, который на основе скачанных данных строит красивые графики. Работа будет полуавтоматическая: данные в формате эксель вы качаете руками, а потом скрипт подхватывает скачанный файл и рисует графики.
Качаем цены с Росстата и строим графики
Без скрипта анализировать данные с этой страницы не получится. Там есть построение графиков прямо на сайте, но у программистов не хватило мозгов отсортировать данные, поэтому после 1 недели идёт 10-я неделя, после 29-й недели идёт 3-я неделя, а после 3-й недели идёт 30-я. 
Качаем цены с Росстата и строим графики

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

Шаг 0.
Скачиваем архив и разархивируем его.
https://yadi.sk/d/xF3L9x8FEP7Xtw
Внутри архива лежит папка Rosstat_prices, а в ней одинокий файл со скриптом.
ReadGKS.py
Файл не долго будет один. В дальнейшем сюда посыпятся картинки графиков. 

Шаг 1.
Ставим Питон, если он у вас ещё не установлен:
https://www.python.org/downloads/

Шаг 2.
Для работы скрипта требуется популярная библиотека matplotlib. Чтобы её установить, запустите cmd.exe (чёрное окошко) и там напишите:
pip install matplotlib
также нужно поставить библиотеку для чтения экселевских файлов:
pip install xlrd

Качаем цены с Росстата и строим графики
(жмём Enter)

Шаг 3.
Заходим на страницу 
https://www.fedstat.ru/indicator/37426

Шаг 4.
Выставляем галку Территории.
Для этого сначала жмём Очистить на случай если где-то стоит забытая галка
Качаем цены с Росстата и строим графики
Потом выбираем нужный город, регион или всю Российскую Федерацию.
Поиск в браузере через CTRL+F работает, там можно написать первые буквы города/региона и вы попадёте куда нужно
Качаем цены с Росстата и строим графики
В данном случае есть как Воронеж, так и Воронежская область. Напомню, что по отдельному городу скачается только текущий год, а по субъекту федерации можно закачать всю историю полностью. Это какой-то дурацкий глюк сайта статистики. 

Шаг 5.

Среди видов товаров и услуг выбираем либо все, либо те, что нам нужны. Если выбрать все товары, тогда скрипт довольно быстро нарисует 112 графиков.
Качаем цены с Росстата и строим графики
Шаг 6.
Птичка выбора Года. Если не уверены в скорости интернета/мощности компьютера не выбирайте все года, будет долго грузиться. Выберите последние три:
Качаем цены с Росстата и строим графики
Годы выбирать обязательно.

Шаг 7
Выбираем недели. Нужно выбрать все как на картинке. Потому что сидеть в них и ковыряться, ставить птичку за птичкой — гиблое дело.  Определяющим будет выбор Года, который вы сделали на предыдущем шаге. 
Качаем цены с Росстата и строим графики

Шаг 8.
После этого нажимаем Скачать и выбираем «Выбранные данные».
Качаем цены с Росстата и строим графики

Экселевский файл кладём в ту же папку, где лежит скрипт, иначе скрипт не найдёт этот файл.
Качаем цены с Росстата и строим графики
Менять название файла data.xls нельзя, расширение тоже менять нельзя, иначе скрипт его не найдёт.

Шаг 8.
После этого можно запускать скрипт ReadGKS.py
Если вы знакомы с питоном, то и так знаете, как это делать. Если же вы новичок, то подскажу самый простой путь. Вместе с Питоном у вас установился питоновский блокнот (IDLE). В нём можно запускать скрипты.
Качаем цены с Росстата и строим графики

Через File -> Open открываете скрипт.
Качаем цены с Росстата и строим графики
Это будет выглядеть как-то так:
Качаем цены с Росстата и строим графики

И запускаете его через кнопку Run — > Run Module (или жмёте F5)
Качаем цены с Росстата и строим графики
Скрипт начинает создавать картинки и бросать их в папку Rosstat_prices. 
Качаем цены с Росстата и строим графики
Это те товары, которые вы выбрали вот здесь:
Качаем цены с Росстата и строим графики
---
Несколько построенных графиков (средние цены по РФ)
Качаем цены с Росстата и строим графики
Качаем цены с Росстата и строим графики
Качаем цены с Росстата и строим графики
Соль явно затронули коронавирусные закупки ;)
А гречка — королева стратегических товаров:
Качаем цены с Росстата и строим графики
---
П.С. Это, кстати, не единственная страница, где можно брать Росстатовские цены. Есть другая с более крупной базой потребительских товаров.
https://fedstat.ru/indicator/31448
Там 698 наименований, цены обновляются раз в месяц. Графики строятся корректно, поэтому скрипт не нужен, можно строить прямо на сайте или в экселе. По совокупности этих 698 товаров считается инфляция.  
★16
14 комментариев
если растет гречка, значит жизнь не скучна
Отличный пост!
Жаль только это никак не пригодиться в торговли, так как кроме газа с нефтью ничем не торгуем. А не торгуем потому-что нет волатильности. А волатильности нет потому-что…
Ну вы поняли, я надеюсь.
Отличный пост!
avatar
А зачем так качественно и детально разбирать госком*издеж?
avatar
Mezantrop, может это курсовик студента?
avatar
mail-22, 
Я ему сочувствую: вместо того, что бы баб в общаге мацать, столько времени и труда положить на анализ… ээээ… ну Вы поняли…
avatar

главное понять слишком глубокий смысл пояснений

«17 неделя (на 27 апреля 2020 года)»
«2 неделя (на 13 января 2020 года)»

выдаваемых в произвольном порядке

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

но вдруг кто-то разберётся:



Учу EXCEL за 6 минут   в избранном у 60+ здешних

 
Плюсанула за Воронеж.

Внутреннее противоречие: правильно ли я сделала?
Почему в примере Воронеж и вермишель, а не Воркута и водка крепостью 40 об?
avatar
попробовал. не работает.
пишет:

File "....\Documents\Rosstat_prices\ReadGKS.py", line 4, in <module>
import xlrd
ModuleNotFoundError: No module named 'xlrd'

может что не так делаю?
avatar
Dooby, это я виноват, забыл что библиотека для чтения экселя не встроена в питон, а её тоже надо ставить через чёрное окошко
в cmd.exe напишите:

pip install xlrd




Albus (Игорь Китаев), мерси, попробую
avatar
Albus (Игорь Китаев), установил. по аналогии установил и модуль pandas

однако пока не решается задача.
теперь пишет вот так:

========= RESTART: C:\Users\Дмитрий\Documents\Rosstat_prices\ReadGKS.py ========
строк 13 столбцов 70
Бензин автомобильный марки АИ-95, л
Российская Федерация

Traceback (most recent call last):
File «C:\Users\Дмитрий\Documents\Rosstat_prices\ReadGKS.py», line 121, in <module>
plt.savefig(sheet.cell_value(row,1).split(',')[0]+'.jpg', dpi=300, format='jpg')
File «C:\Users\Дмитрий\AppData\Local\Programs\Python\Python38-32\lib\site-packages\matplotlib\pyplot.py», line 723, in savefig
res = fig.savefig(*args, **kwargs)
File «C:\Users\Дмитрий\AppData\Local\Programs\Python\Python38-32\lib\site-packages\matplotlib\figure.py», line 2203, in savefig
self.canvas.print_figure(fname, **kwargs)
File «C:\Users\Дмитрий\AppData\Local\Programs\Python\Python38-32\lib\site-packages\matplotlib\backend_bases.py», line 2059, in print_figure
canvas = self._get_output_canvas(format)
File «C:\Users\Дмитрий\AppData\Local\Programs\Python\Python38-32\lib\site-packages\matplotlib\backend_bases.py», line 1997, in _get_output_canvas
raise ValueError(
ValueError: Format 'jpg' is not supported (supported formats: eps, pdf, pgf, png, ps, raw, rgba, svg, svgz)
>>>

судя по всему что-то не то :)) в любом случае, спасибо. я поизучаю вопрос, может сам смогу создать подобную прогу.
удачи

avatar
Dooby, самая главная строчка в этой ошибке:
ValueError: Format 'jpg' is not supported (supported formats: eps, pdf, pgf, png, ps, raw, rgba, svg, svgz)

Странно. У меня jpg поддерживается. 
Найдите строчку 
plt.savefig('pict\\'+sheet.cell_value(row,1).split(',')[0]+'.jpg', dpi=300, format='jpg')
и в ней в обоих случаях поменяйте jpg на png

будет вот так:
plt.savefig('pict\\'+sheet.cell_value(row,1).split(',')[0]+'.png', dpi=300, format='png')

Самые интересные данные по макропараметрам экономики, ну вы поняли. Зато стоимость сахарного песка посмотреть можно, очень полезно.
avatar

теги блога Albus (Игорь Китаев)

....все тэги



UPDONW
Новый дизайн