Консольное Python-приложение для обработки CSV-файлов.
Поддерживает следующие функции:
- фильтрация строк по одной колонке с операторами «>», «<», «=»
- агрегация значений по одной колонке с функциями: avg, min, max, sum, count
- форматированный вывод результатов в виде таблицы в консоль
- Загрузка CSV-файла в память
- Фильтрация строк по условию вида «колонка>значение», «колонка<значение», «колонка=значение»
- Агрегация по одной колонке с функциями:
- avg — среднее значение
- min — минимальное значение
- max — максимальное значение
- sum — сумма значений
- count — количество строк
- Вывод результатов с использованием библиотек
tabulateиcoloramaдля читаемого отображения
Функция load_csv():
- Чтение файла через
csv.DictReader. - Каждая строка преобразуется в словарь с ключами по названиям колонок.
Функция parse_condition():
- Принимает строку фильтрации.
- Выделяет оператор сравнения.
- Возвращает имя колонки, оператор и значение для сравнения.
Функция apply_filter():
- Проверяет условие для каждой строки.
- Преобразует значения к числу при возможности.
- Поддерживает сравнение чисел и строгое сравнение строк.
- Возвращает отфильтрованный список строк.
Функция apply_aggregation():
- Разбирает аргумент вида «колонка=функция».
- Для avg, min, max, sum выполняет преобразование значений к float.
- Функция count возвращает количество строк без учета типов данных.
- Возвращает словарь с результатом агрегации.
Функция display_results():
- Использует
tabulateдля форматированного вывода таблиц. - Разные форматы вывода для фильтрации и агрегации.
- Цветовой вывод через
coloramaдля выделения информации.
Функция main():
- Использует
argparseдля парсинга аргументов:--file— путь к CSV-файлу (обязательный)--where— условие фильтрации--aggregate— условие агрегации
- Последовательность шагов:
- Загрузка данных
- Применение фильтрации
- Применение агрегации
- Вывод результата
- Использование только стандартных библиотек Python (кроме
tabulateиcolorama). - Простое и понятное разделение функций по единой ответственности.
- Ограничение на одно условие фильтрации и одну колонку для агрегации упрощает логику и соответствует требованиям прототипа.
- Использование
tabulateиcoloramaобеспечивает удобочитаемый и наглядный вывод.
- Только одно условие фильтрации за один вызов.
- Только одна колонка для агрегации за один вызов.
- Поддерживаются только операторы сравнения:
>,<,=. - Для функций агрегации (кроме count) колонка должна содержать числовые данные.
Скрипт предназначен для использования как минимальный инструмент командной строки для предварительного анализа CSV-данных.
Подходит для демонстрации прототипа, тестирования простых сценариев и интеграции в учебные пайплайны обработки данных.