Skip to content

archsaurus/EcoX

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Установка/настройка

Проект использует виртуальное окружение, созданное с помощью pyvenv, для изоляции зависимостей и обеспечения стабильной работы безотносительно операционной системы, под которой он запускается.

Инициализация виртуального окружения

1. Создать виртуальное окружение:

python3 -m venv venv

2. Активировать это окружение:

Для ОС на основе Unix, BSD или Linux:

source venv/bin/activate

Для ОС семейства Windows:

venv\Scripts\activate

3. Установка зависимостей:

К проекту прилагается файл requirements.txt с сигнатурами зависимостей. необходимо установить зависимости проекта, используя данный файл:

pip install -r requirements.txt

Теперь всё готово для запуска.

Структура проекта

/
├ economics_metrices_analyzer/
│ ├─── cli.py -- парсинг аргументов командной строки
│ ├── configurator.py -- класс конфигуратора
│ ├── gdp_calculator.py -- основной модуль рассчёта метрик
│ ├── __init__.py
│ ├── __main__.py -- точка входа модуля 
│ ├── parsers.py -- парсеры данных из кортежа CSV-файлов
│ ├── tests -- тесты основного кода
│ │   ├── conftest.py -- конфигурация pytest
│ │   ├── __init__.py
│ │   ├── test_cli.py -- пакет тестов для модуля cli
│ │   ├── test_configurator.py -- пакет тестов для модуля configurator 
│ │   ├── test_gdp_calculator.py -- пакет тестов для модуля gdp_calculator 
│ │   ├── test_parsers.py -- пакет тестов для модуля parsers 
│ │   └── test_utils.py -- пакет тестов для модуля utils 
│ └── utils.py -- вспомогательные методы обработки и вывода данных
├── static/ -- логи запусков flake8, pylint, pytest, таблицы корректных результатов запуска
└── requirements.txt

Как использовать

Кратко

1. Запуск только с обязательными параметрами:

python -m economics_metrices_analyzer --key-column country --files static/economic3.csv --report "average-gdp"

2. Запуск с краткими версиями флагов:

python -m economics_metrices_analyzer -e "utf-8" -d , -k country -c gdp -s -f static/*.csv -r "average-gdp"

3. Запуск с полными версиями флагов:

python -m economics_metrices_analyzer --encoding "utf-8" --delimiter , --key-column country --required-columns gdp --skip-invalid --files static/*.csv --report "average-gdp" 

Подробно. То, что должен выдавать результат интеграции с argparse:

usage: python -m economics_metrices_analyzer [-h] [--encoding ENCODING]
                                             [--delimiter DELIMITER]
                                             [--key-column KEY_COLUMN [KEY_COLUMN ...]]
                                             [--required-columns REQUIRED_COLUMNS [REQUIRED_COLUMNS ...]]
                                             [--skip-invalid]
                                             --files FILES [FILES ...]
                                             --report {average-gdp,min-gdp,max-gdp} [{average-gdp,min-gdp,max-gdp} ...]

Агрегатор макроэкономических метрик по странам из CSV‑файлов.

options:
  -h, --help            show this help message and exit
  --encoding, -e ENCODING
                        Кодировка входных файлов(по умолчанию – UTF-8)
  --delimiter, -d DELIMITER
                        Разделитель (по умолчанию – автоопределение)
  --key-column, -k KEY_COLUMN [KEY_COLUMN ...]
                        Возможные значения столбца с названием страны
  --required-columns, -c REQUIRED_COLUMNS [REQUIRED_COLUMNS ...]
                        Перечислите имена столбцов, которые обязаны
                        присутствовать в каждом файле
  --skip-invalid, -s    Пропускать строки с ошибками вместо аварийного
                        завершения
  --files, -f FILES [FILES ...]
                        Источник(-и) данных (поддерживаются шаблны, например
                        *.csv)
  --report, -r {average-gdp,min-gdp,max-gdp} [{average-gdp,min-gdp,max-gdp} ...]
                        Целевая метрика(-ки)

Подробно. Примеры использования

Запуск с краткими версиями флагов:

Команда

python -m economics_metrices_analyzer \
       -e "utf-8" \ 
       -d , \
       -k country \
       -c gdp \
       -s \
       -f static/*.csv \
       -r "average-gdp"

Вывод:

Argentina:
	1) {'country': 'Argentina', 'year': '2023', 'gdp': '520', 'gdp_growth': '1.5', 'inflation': '4.9', 'unemployment': '9.2', 'population': '45', 'continent': 'South America'}
	2) {'country': 'Argentina', 'year': '2022', 'gdp': '510', 'gdp_growth': '2.3', 'inflation': '5.5', 'unemployment': '9.0', 'population': '45', 'continent': 'South America'}
	3) {'country': 'Argentina', 'year': '2021', 'gdp': '500', 'gdp_growth': '5.0', 'inflation': '5.3', 'unemployment': '9.4', 'population': '45', 'continent': 'South America'}
	4) {'country': 'Argentina', 'year': '2020', 'gdp': '460', 'gdp_growth': '-10.0', 'inflation': '3.7', 'unemployment': '10.5', 'population': '45', 'continent': 'South America'}
	5) {'country': 'Argentina', 'year': '2019', 'gdp': '480', 'gdp_growth': '2.2', 'inflation': '4.0', 'unemployment': '9.8', 'population': '45', 'continent': 'South America'}
	6) {'country': 'Argentina', 'year': '2018', 'gdp': '470', 'gdp_growth': '2.5', 'inflation': '4.2', 'unemployment': '10.0', 'population': '45', 'continent': 'South America'}
	7) {'country': 'Argentina', 'year': '2017', 'gdp': '460', 'gdp_growth': '2.8', 'inflation': '4.5', 'unemployment': '10.2', 'population': '45', 'continent': 'South America'}
	8) {'country': 'Argentina', 'year': '2016', 'gdp': '450', 'gdp_growth': '2.0', 'inflation': '4.7', 'unemployment': '10.3', 'population': '45', 'continent': 'South America'}
	9) {'country': 'Argentina', 'year': '2015', 'gdp': '440', 'gdp_growth': '2.1', 'inflation': '5.0', 'unemployment': '10.5', 'population': '45', 'continent': 'South America'}
	average-gdp: 476.67

Australia:
	1) {'country': 'Australia', 'year': '2023', 'gdp': '1693', 'gdp_growth': '2.1', 'inflation': '5.2', 'unemployment': '3.7', 'population': '26', 'continent': 'Oceania'}
	2) {'country': 'Australia', 'year': '2022', 'gdp': '1675', 'gdp_growth': '3.7', 'inflation': '6.6', 'unemployment': '3.7', 'population': '26', 'continent': 'Oceania'}
	3) {'country': 'Australia', 'year': '2021', 'gdp': '1543', 'gdp_growth': '1.6', 'inflation': '2.9', 'unemployment': '5.1', 'population': '26', 'continent': 'Oceania'}
	4) {'country': 'Australia', 'year': '2020', 'gdp': '1395', 'gdp_growth': '-2.4', 'inflation': '1.8', 'unemployment': '6.9', 'population': '26', 'continent': 'Oceania'}
	5) {'country': 'Australia', 'year': '2019', 'gdp': '1470', 'gdp_growth': '1.7', 'inflation': '2.0', 'unemployment': '5.8', 'population': '26', 'continent': 'Oceania'}
	6) {'country': 'Australia', 'year': '2018', 'gdp': '1390', 'gdp_growth': '2.5', 'inflation': '1.9', 'unemployment': '5.5', 'population': '26', 'continent': 'Oceania'}
	7) {'country': 'Australia', 'year': '2017', 'gdp': '1325', 'gdp_growth': '2.2', 'inflation': '1.8', 'unemployment': '5.6', 'population': '26', 'continent': 'Oceania'}
	8) {'country': 'Australia', 'year': '2016', 'gdp': '1240', 'gdp_growth': '2.0', 'inflation': '1.6', 'unemployment': '5.9', 'population': '26', 'continent': 'Oceania'}
	9) {'country': 'Australia', 'year': '2015', 'gdp': '1175', 'gdp_growth': '2.5', 'inflation': '1.5', 'unemployment': '6.2', 'population': '26', 'continent': 'Oceania'}
	average-gdp: 1434.0

...

United states:
	1) {'country': 'United States', 'year': '2023', 'gdp': '25462', 'gdp_growth': '2.1', 'inflation': '3.4', 'unemployment': '3.7', 'population': '339', 'continent': 'North America'}
	2) {'country': 'United States', 'year': '2022', 'gdp': '23315', 'gdp_growth': '2.1', 'inflation': '8.0', 'unemployment': '3.6', 'population': '338', 'continent': 'North America'}
	3) {'country': 'United States', 'year': '2021', 'gdp': '22994', 'gdp_growth': '5.9', 'inflation': '4.7', 'unemployment': '5.3', 'population': '337', 'continent': 'North America'}
	4) {'country': 'United States', 'year': '2020', 'gdp': '20936', 'gdp_growth': '-3.5', 'inflation': '1.2', 'unemployment': '6.7', 'population': '331', 'continent': 'North America'}
	5) {'country': 'United States', 'year': '2019', 'gdp': '20580', 'gdp_growth': '2.2', 'inflation': '1.8', 'unemployment': '3.7', 'population': '328', 'continent': 'North America'}
	6) {'country': 'United States', 'year': '2018', 'gdp': '19485', 'gdp_growth': '2.9', 'inflation': '2.4', 'unemployment': '4.0', 'population': '327', 'continent': 'North America'}
	7) {'country': 'United States', 'year': '2017', 'gdp': '18560', 'gdp_growth': '2.2', 'inflation': '2.1', 'unemployment': '4.4', 'population': '326', 'continent': 'North America'}
	8) {'country': 'United States', 'year': '2016', 'gdp': '17924', 'gdp_growth': '1.5', 'inflation': '1.5', 'unemployment': '4.9', 'population': '324', 'continent': 'North America'}
	9) {'country': 'United States', 'year': '2015', 'gdp': '17321', 'gdp_growth': '2.9', 'inflation': '0.1', 'unemployment': '5.3', 'population': '321', 'continent': 'North America'}
	average-gdp: 20730.78

Запуск с полными версиями флагов:

Команда

python -m economics_metrices_analyzer \
       --encoding "utf-8" \ 
       --delimiter , \
       --key-column country \
       --required-columns gdp \
       --skip-invalid \
       --files static/*.csv \
       --report "average-gdp"

Вывод:

Argentina:
	1) {'country': 'Argentina', 'year': '2023', 'gdp': '520', 'gdp_growth': '1.5', 'inflation': '4.9', 'unemployment': '9.2', 'population': '45', 'continent': 'South America'}
	2) {'country': 'Argentina', 'year': '2022', 'gdp': '510', 'gdp_growth': '2.3', 'inflation': '5.5', 'unemployment': '9.0', 'population': '45', 'continent': 'South America'}
	3) {'country': 'Argentina', 'year': '2021', 'gdp': '500', 'gdp_growth': '5.0', 'inflation': '5.3', 'unemployment': '9.4', 'population': '45', 'continent': 'South America'}
	4) {'country': 'Argentina', 'year': '2020', 'gdp': '460', 'gdp_growth': '-10.0', 'inflation': '3.7', 'unemployment': '10.5', 'population': '45', 'continent': 'South America'}
	5) {'country': 'Argentina', 'year': '2019', 'gdp': '480', 'gdp_growth': '2.2', 'inflation': '4.0', 'unemployment': '9.8', 'population': '45', 'continent': 'South America'}
	6) {'country': 'Argentina', 'year': '2018', 'gdp': '470', 'gdp_growth': '2.5', 'inflation': '4.2', 'unemployment': '10.0', 'population': '45', 'continent': 'South America'}
	7) {'country': 'Argentina', 'year': '2017', 'gdp': '460', 'gdp_growth': '2.8', 'inflation': '4.5', 'unemployment': '10.2', 'population': '45', 'continent': 'South America'}
	8) {'country': 'Argentina', 'year': '2016', 'gdp': '450', 'gdp_growth': '2.0', 'inflation': '4.7', 'unemployment': '10.3', 'population': '45', 'continent': 'South America'}
	9) {'country': 'Argentina', 'year': '2015', 'gdp': '440', 'gdp_growth': '2.1', 'inflation': '5.0', 'unemployment': '10.5', 'population': '45', 'continent': 'South America'}
	average-gdp: 476.67

Australia:
	1) {'country': 'Australia', 'year': '2023', 'gdp': '1693', 'gdp_growth': '2.1', 'inflation': '5.2', 'unemployment': '3.7', 'population': '26', 'continent': 'Oceania'}
	2) {'country': 'Australia', 'year': '2022', 'gdp': '1675', 'gdp_growth': '3.7', 'inflation': '6.6', 'unemployment': '3.7', 'population': '26', 'continent': 'Oceania'}
	3) {'country': 'Australia', 'year': '2021', 'gdp': '1543', 'gdp_growth': '1.6', 'inflation': '2.9', 'unemployment': '5.1', 'population': '26', 'continent': 'Oceania'}
	4) {'country': 'Australia', 'year': '2020', 'gdp': '1395', 'gdp_growth': '-2.4', 'inflation': '1.8', 'unemployment': '6.9', 'population': '26', 'continent': 'Oceania'}
	5) {'country': 'Australia', 'year': '2019', 'gdp': '1470', 'gdp_growth': '1.7', 'inflation': '2.0', 'unemployment': '5.8', 'population': '26', 'continent': 'Oceania'}
	6) {'country': 'Australia', 'year': '2018', 'gdp': '1390', 'gdp_growth': '2.5', 'inflation': '1.9', 'unemployment': '5.5', 'population': '26', 'continent': 'Oceania'}
	7) {'country': 'Australia', 'year': '2017', 'gdp': '1325', 'gdp_growth': '2.2', 'inflation': '1.8', 'unemployment': '5.6', 'population': '26', 'continent': 'Oceania'}
	8) {'country': 'Australia', 'year': '2016', 'gdp': '1240', 'gdp_growth': '2.0', 'inflation': '1.6', 'unemployment': '5.9', 'population': '26', 'continent': 'Oceania'}
	9) {'country': 'Australia', 'year': '2015', 'gdp': '1175', 'gdp_growth': '2.5', 'inflation': '1.5', 'unemployment': '6.2', 'population': '26', 'continent': 'Oceania'}
	average-gdp: 1434.0

...

United states:
	1) {'country': 'United States', 'year': '2023', 'gdp': '25462', 'gdp_growth': '2.1', 'inflation': '3.4', 'unemployment': '3.7', 'population': '339', 'continent': 'North America'}
	2) {'country': 'United States', 'year': '2022', 'gdp': '23315', 'gdp_growth': '2.1', 'inflation': '8.0', 'unemployment': '3.6', 'population': '338', 'continent': 'North America'}
	3) {'country': 'United States', 'year': '2021', 'gdp': '22994', 'gdp_growth': '5.9', 'inflation': '4.7', 'unemployment': '5.3', 'population': '337', 'continent': 'North America'}
	4) {'country': 'United States', 'year': '2020', 'gdp': '20936', 'gdp_growth': '-3.5', 'inflation': '1.2', 'unemployment': '6.7', 'population': '331', 'continent': 'North America'}
	5) {'country': 'United States', 'year': '2019', 'gdp': '20580', 'gdp_growth': '2.2', 'inflation': '1.8', 'unemployment': '3.7', 'population': '328', 'continent': 'North America'}
	6) {'country': 'United States', 'year': '2018', 'gdp': '19485', 'gdp_growth': '2.9', 'inflation': '2.4', 'unemployment': '4.0', 'population': '327', 'continent': 'North America'}
	7) {'country': 'United States', 'year': '2017', 'gdp': '18560', 'gdp_growth': '2.2', 'inflation': '2.1', 'unemployment': '4.4', 'population': '326', 'continent': 'North America'}
	8) {'country': 'United States', 'year': '2016', 'gdp': '17924', 'gdp_growth': '1.5', 'inflation': '1.5', 'unemployment': '4.9', 'population': '324', 'continent': 'North America'}
	9) {'country': 'United States', 'year': '2015', 'gdp': '17321', 'gdp_growth': '2.9', 'inflation': '0.1', 'unemployment': '5.3', 'population': '321', 'continent': 'North America'}
	average-gdp: 20730.78

Запуск только с обязательными параметрами:

Команда:

python -m economics_metrices_analyzer \
       --key-column country \
       --files static/economics3.csv \
       --report "average-gdp"

Вывод:


Argentina:
	1) {'country': 'Argentina', 'year': '2023', 'gdp': '520', 'gdp_growth': '1.5', 'inflation': '4.9', 'unemployment': '9.2', 'population': '45', 'continent': 'South America'}
	2) {'country': 'Argentina', 'year': '2022', 'gdp': '510', 'gdp_growth': '2.3', 'inflation': '5.5', 'unemployment': '9.0', 'population': '45', 'continent': 'South America'}
	3) {'country': 'Argentina', 'year': '2021', 'gdp': '500', 'gdp_growth': '5.0', 'inflation': '5.3', 'unemployment': '9.4', 'population': '45', 'continent': 'South America'}
	4) {'country': 'Argentina', 'year': '2020', 'gdp': '460', 'gdp_growth': '-10.0', 'inflation': '3.7', 'unemployment': '10.5', 'population': '45', 'continent': 'South America'}
	5) {'country': 'Argentina', 'year': '2019', 'gdp': '480', 'gdp_growth': '2.2', 'inflation': '4.0', 'unemployment': '9.8', 'population': '45', 'continent': 'South America'}
	6) {'country': 'Argentina', 'year': '2018', 'gdp': '470', 'gdp_growth': '2.5', 'inflation': '4.2', 'unemployment': '10.0', 'population': '45', 'continent': 'South America'}
	7) {'country': 'Argentina', 'year': '2017', 'gdp': '460', 'gdp_growth': '2.8', 'inflation': '4.5', 'unemployment': '10.2', 'population': '45', 'continent': 'South America'}
	8) {'country': 'Argentina', 'year': '2016', 'gdp': '450', 'gdp_growth': '2.0', 'inflation': '4.7', 'unemployment': '10.3', 'population': '45', 'continent': 'South America'}
	9) {'country': 'Argentina', 'year': '2015', 'gdp': '440', 'gdp_growth': '2.1', 'inflation': '5.0', 'unemployment': '10.5', 'population': '45', 'continent': 'South America'}
	average-gdp: 476.67

...

United states:
	1) {'country': 'United States', 'year': '2023', 'gdp': '25462', 'gdp_growth': '2.1', 'inflation': '3.4', 'unemployment': '3.7', 'population': '339', 'continent': 'North America'}
	2) {'country': 'United States', 'year': '2022', 'gdp': '23315', 'gdp_growth': '2.1', 'inflation': '8.0', 'unemployment': '3.6', 'population': '338', 'continent': 'North America'}
	3) {'country': 'United States', 'year': '2021', 'gdp': '22994', 'gdp_growth': '5.9', 'inflation': '4.7', 'unemployment': '5.3', 'population': '337', 'continent': 'North America'}
	4) {'country': 'United States', 'year': '2020', 'gdp': '20936', 'gdp_growth': '-3.5', 'inflation': '1.2', 'unemployment': '6.7', 'population': '331', 'continent': 'North America'}
	5) {'country': 'United States', 'year': '2019', 'gdp': '20580', 'gdp_growth': '2.2', 'inflation': '1.8', 'unemployment': '3.7', 'population': '328', 'continent': 'North America'}
	6) {'country': 'United States', 'year': '2018', 'gdp': '19485', 'gdp_growth': '2.9', 'inflation': '2.4', 'unemployment': '4.0', 'population': '327', 'continent': 'North America'}
	7) {'country': 'United States', 'year': '2017', 'gdp': '18560', 'gdp_growth': '2.2', 'inflation': '2.1', 'unemployment': '4.4', 'population': '326', 'continent': 'North America'}
	8) {'country': 'United States', 'year': '2016', 'gdp': '17924', 'gdp_growth': '1.5', 'inflation': '1.5', 'unemployment': '4.9', 'population': '324', 'continent': 'North America'}
	9) {'country': 'United States', 'year': '2015', 'gdp': '17321', 'gdp_growth': '2.9', 'inflation': '0.1', 'unemployment': '5.3', 'population': '321', 'continent': 'North America'}
	average-gdp: 20730.78

About

This project is a macroeconomic data aggregator designed to compile and analyze key economic metrics from a set of CSV dumps. The application processes multiple CSV datasets, extracts relevant metrics, and provides a consolidated view to facilitate understanding of macroeconomic trends.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages