Skip to content

iBubenok/brand-rating-analyzer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Brand Rating Analyzer

Инструмент для анализа рейтингов брендов из CSV файлов. Читает данные о продуктах из нескольких CSV файлов, вычисляет средний рейтинг по брендам и выводит результат в виде отсортированной таблицы.

Установка

  1. Клонируйте репозиторий или скачайте исходный код

  2. Установите зависимости:

pip install -r requirements.txt

Использование

Базовый пример

python main.py --files products1.csv products2.csv --report average-rating

Примеры запуска с реальными данными

# Анализ двух файлов
python main.py --files products1.csv products2.csv --report average-rating

# Можно использовать относительные или абсолютные пути
python main.py --files ./data/products1.csv ./data/products2.csv --report average-rating

Ожидаемый формат CSV файлов

CSV файлы должны содержать следующие колонки:

  • name - название продукта
  • brand - бренд продукта
  • price - цена продукта (число)
  • rating - рейтинг продукта (число от 0 до 5)

Пример:

name,brand,price,rating
iphone 15 pro,apple,999,4.9
galaxy s23 ultra,samsung,1199,4.8
redmi note 12,xiaomi,199,4.6

Пример вывода

+----------+--------+
| brand    | rating |
+==========+========+
| 1 apple  |  4.85  |
+----------+--------+
| 2 samsung|  4.60  |
+----------+--------+
| 3 xiaomi |  4.45  |
+----------+--------+

Запуск тестов

Запуск всех тестов

pytest

Запуск с покрытием кода

pytest --cov=src --cov-report=term-missing

Запуск конкретного тестового файла

pytest tests/test_readers.py
pytest tests/test_reports.py

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

brand-rating-analyzer/
├── main.py              # Точка входа приложения
├── src/
│   ├── __init__.py
│   ├── readers.py       # Чтение CSV файлов
│   ├── reports.py       # Генерация отчетов (паттерн Registry)
│   └── formatters.py    # Форматирование вывода
├── tests/
│   ├── __init__.py
│   ├── test_readers.py  # Тесты для readers
│   ├── test_reports.py  # Тесты для reports и formatters
│   └── fixtures/        # Тестовые CSV файлы
├── requirements.txt
├── README.md
└── DECISIONS.md

Доступные отчеты

  • average-rating - средний рейтинг по брендам, отсортированный по убыванию

Требования

  • Python 3.8+
  • tabulate 0.9.0
  • pytest 7.4.3 (для тестов)
  • pytest-cov 4.1.0 (для измерения покрытия)

Обработка ошибок

Скрипт обрабатывает следующие ситуации:

  • Несуществующие файлы
  • Неправильная структура CSV (отсутствующие колонки)
  • Пустые файлы
  • Неподдерживаемые типы отчетов

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages