Инструмент для анализа рейтингов брендов из CSV файлов. Читает данные о продуктах из нескольких CSV файлов, вычисляет средний рейтинг по брендам и выводит результат в виде отсортированной таблицы.
-
Клонируйте репозиторий или скачайте исходный код
-
Установите зависимости:
pip install -r requirements.txtpython 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-ratingCSV файлы должны содержать следующие колонки:
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 |
+----------+--------+
pytestpytest --cov=src --cov-report=term-missingpytest tests/test_readers.py
pytest tests/test_reports.pybrand-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 (отсутствующие колонки)
- Пустые файлы
- Неподдерживаемые типы отчетов