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.0
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.0.tar.gz | 16.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| fedstat-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 36.1 kB
Release files / fedstat-0.1.0.tar.gz
| Download URL | fedstat-0.1.0.tar.gz |
|---|---|
| Size | 16.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6e2f10d9a691b7d7c86bcc498d0661cc408c0a7aaf63986db034c9663ffc7338
|
|
BLAKE2b-256 checksum How to use checksums |
1f56b26d3dc9216654694724cd1b2a55509dcf6c88cb36247701939bc744b690
|
| 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.0-py3-none-any.whl
| Download URL | fedstat-0.1.0-py3-none-any.whl |
|---|---|
| Size | 19.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
16344be6383ff4ac26d2c42f393f9c6d8befa9d6e0d104505fe333ccd55a08bd
|
|
BLAKE2b-256 checksum How to use checksums |
704c8529d42d79a5a813359948a4fc418bb002b3805e034d000110ccf4ddf78e
|
| 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
|