fedstat
Неофициальный Python-клиент к fedstat.ru (ЕМИСС) —
порт идей R-пакета fedstatAPIr.
Скачивает данные показателей с фильтрами и отдаёт нормализованный
pandas.DataFrame.
Статус: MVP — list_filters / filter_template / load (формат SDMX).
Дальше планируется догнать полный функционал R-пакета (Excel, режим словаря,
расширенные ретраи и т.д.).
Установка
Для использования (после публикации на PyPI — планируется):
pip install fedstat
Пока проект на GitHub — ставится напрямую из репозитория, без ручного клонирования:
pip install git+ssh://git@github.com/timryadovouu/fedstat.git
Для разработки (клон + окружение poetry):
git clone git@github.com:timryadovouu/fedstat.git
cd fedstat
poetry install
poetry install ставит зависимости в локальное окружение проекта — эта команда
предполагает, что исходники уже склонированы (вариант «для разработки»).
Пример
Готовый ноутбук: notebooks/example.ipynb.
Быстрый старт
import fedstat
# 1. Какие фильтры есть у показателя (id — из URL вида /indicator/31452)
fedstat.list_filters("31452") # DataFrame: поле -> допустимые значения
# 2. Шаблон со всеми полями (значения по умолчанию "*" = все)
f = fedstat.filter_template("31452")
f["Год"] = "2023"
f["Рынок жилья"] = "Первичный рынок жилья"
# 3. Скачать нормализованный ("длинный") DataFrame
df = fedstat.load("31452", filters=f)
df.to_csv("cena.csv", index=False)
df.to_excel("cena.xlsx", index=False)
# 4. При желании — "широкий" вид (одно измерение по столбцам)
wide = fedstat.to_wide(df, columns="PERIOD", values="VALUE", index="TIME")
Правила фильтров:
- ключ — заголовок поля, как на сайте (регистр и лишние пробелы игнорируются);
- значение — строка, список строк или
"*"(все значения); - пропущенное поле = все значения;
- неверное имя поля/значения ->
FilterErrorс подсказкой похожего варианта.
Формат вывода
Одна строка = одно наблюдение. Столбцы измерений расшифрованы из справочников
(codelists) в человекочитаемые названия, VALUE приведён к числу (десятичная
запятая -> точка). Опции load(...):
with_codes=True— добавить исходные коды измерений (<поле>_code);drop_empty=True— выбросить строки без значения;try_numeric=False— оставитьVALUEстрокой.
Модули
| модуль | назначение |
|---|---|
fedstat.client |
HTTP-сессия, заголовки, ретраи GET, POST на скачивание |
fedstat.discovery |
разбор страницы индикатора -> DataIds (поля, значения, CSRF) |
fedstat.jsparse |
разбор встроенного JS (порт parse_js1/parse_js2) |
fedstat.filters |
отбор строк по фильтрам, шаблон, подсказки |
fedstat.sdmx |
SDMX -> нормализованный DataFrame |
fedstat.api |
высокоуровневые load / list_filters / filter_template |
Разработка и тесты
Тесты гоняются офлайн на сохранённых фикстурах (fixtures/), сеть не нужна:
poetry run pytest -q
Снятие новых фикстур с живого сайта — ноутбук notebooks/capture_fixtures.ipynb
(нужен доступ к fedstat.ru).
Metadata
Release files for fedstat 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| fedstat-0.1.1.tar.gz | 16.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| fedstat-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 36.1 kB
Release files / fedstat-0.1.1.tar.gz
| Download URL | fedstat-0.1.1.tar.gz |
|---|---|
| Size | 16.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
36895ea9c021df278fdd48d8546e547efd24a642b1647a32d6530580b950be17
|
|
BLAKE2b-256 checksum How to use checksums |
5a2e4ca8a5252ce1d9c4558723d7cd1c19eb8e4155f79f5031bd87bc52995b21
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.3.2 CPython/3.12.7 Darwin/24.6.0
|
Release files / fedstat-0.1.1-py3-none-any.whl
| Download URL | fedstat-0.1.1-py3-none-any.whl |
|---|---|
| Size | 19.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d94ed22f0302fe0c5fb2ae2e1cc7bdba643598393edf9e5044128a73a3f7b790
|
|
BLAKE2b-256 checksum How to use checksums |
f5c90bd960348591f8525f21176bf2ae7f9e466ec1432ded2d2a91229201d50c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.3.2 CPython/3.12.7 Darwin/24.6.0
|