Блог им. 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 товаров считается инфляция.  
★15 | ₽ 100
если растет гречка, значит жизнь не скучна
Отличный пост!
Жаль только это никак не пригодиться в торговли, так как кроме газа с нефтью ничем не торгуем. А не торгуем потому-что нет волатильности. А волатильности нет потому-что…
Ну вы поняли, я надеюсь.
Отличный пост!
avatar

Vladimir N.

А зачем так качественно и детально разбирать госком*издеж?
avatar

Mezantrop

Mezantrop, может это курсовик студента?
avatar

mail-22

mail-22, 
Я ему сочувствую: вместо того, что бы баб в общаге мацать, столько времени и труда положить на анализ… ээээ… ну Вы поняли…
avatar

Mezantrop

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

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

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

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

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



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

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

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

OlgaA

попробовал. не работает.
пишет:

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

может что не так делаю?
avatar

Dooby

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

pip install xlrd




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

Dooby

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

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

v_0ver


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

....все тэги



2010-2020
UPDONW