Коллеги скачали файл из Федерального портала государственной статистики. Файл оказался в формате XML.
Скачать статданные в формате XLS не получилось. Они обратились с просьбой обработать XML-файл.
Федеральный портал государственной статистики содержит различные индикаторы и статистические данные по России.
Требовалось обработать расчётный показатель "Ожидаемая продолжительность жизни".
Данные были выгружены по Центральному федеральному округу (Калужская, Брянская, Тульская и другие области).
Период: с 1990 по 2017 годы.
Сайт работает нестабильно и попытка зарегистрироваться на нём не увенчалась успехом.
Без регистрации выгрузить статданные в эксель нельзя. Только в XML.
Вот так выглядит страница сайта, с которой можно скачать статданные:
При анализе XML-файла я увидел, что в самом начале он содержит три справочника:
- список регионов
- структура населения
- тип поселения
Ниже, после справочников, идут статданные. Видно, что они структурированы, т.е. представлены в виде "блоков":
<generic:SeriesKey>
<generic:Value concept="s_OKATO" value="643"/>
<generic:Value concept="S_GRUP_2" value="2"/>
<generic:Value concept="s_mest" value="w2:p_mest:11"/>
</generic:SeriesKey>
<generic:Attributes>
<generic:Value concept="EI" value="год"/>
<generic:Value concept="PERIOD" value="значение показателя за год"/>
</generic:Attributes>
<generic:Obs>
<generic:Time>1991</generic:Time>
<generic:ObsValue value="74,2"/>
</generic:Obs>
Для парсинга XML-файла я использовал python 3.7 и модуль xml.dom.minidom.
Скрипт script.py обрабатывает XML, извлекает данные и сохраняет их в CSV-файл.
Затем этот файл можно открыть в экселе и навести красоту. Поставить фильтры на заголовки. Выделить заголовки цветом и т.д.
Скрипт писался только для обработки статданных за 1990-2017 годы, по регионам, входящим в ЦФО.
Чтобы получить сведения за другой период и/или по другим регионам, на этой странице сайта необходимо:
- поставить нужные фильтры в столбце регионы;
- выбрать годы;
- скачать новый XML-файл.
Затем в скрипте (script.py) модифицировать код в следующих строках:
- 3, где указано имя XML-файла;
- 7-9, где перечисляются коды регионов;
- 23, где с помощью функции range идёт перечисление 1990-2018 годов (обращаю внимание, что последний 2018 год не идёт в расчёт).
data.xml - исходный XML-файл, выгруженный с сайта;
script.py - Python скрипт;
data.csv - промежуточный CSV-файл, полученный после запуска скрипта;
Ожидаемая продолжительность жизни при рождении.xlsx - итоговый XLSX-файл с фильтрами.