Skip to content

nickihysterics/csv_prot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CSV-Reader

Описание решения

Консольное Python-приложение для обработки CSV-файлов.
Поддерживает следующие функции:

  • фильтрация строк по одной колонке с операторами «>», «<», «=»
  • агрегация значений по одной колонке с функциями: avg, min, max, sum, count
  • форматированный вывод результатов в виде таблицы в консоль

Основные возможности

  • Загрузка CSV-файла в память
  • Фильтрация строк по условию вида «колонка>значение», «колонка<значение», «колонка=значение»
  • Агрегация по одной колонке с функциями:
    • avg — среднее значение
    • min — минимальное значение
    • max — максимальное значение
    • sum — сумма значений
    • count — количество строк
  • Вывод результатов с использованием библиотек tabulate и colorama для читаемого отображения

Структура решения

1. Загрузка CSV

Функция load_csv():

  • Чтение файла через csv.DictReader.
  • Каждая строка преобразуется в словарь с ключами по названиям колонок.

2. Парсинг условия фильтрации

Функция parse_condition():

  • Принимает строку фильтрации.
  • Выделяет оператор сравнения.
  • Возвращает имя колонки, оператор и значение для сравнения.

3. Применение фильтрации

Функция apply_filter():

  • Проверяет условие для каждой строки.
  • Преобразует значения к числу при возможности.
  • Поддерживает сравнение чисел и строгое сравнение строк.
  • Возвращает отфильтрованный список строк.

4. Применение агрегации

Функция apply_aggregation():

  • Разбирает аргумент вида «колонка=функция».
  • Для avg, min, max, sum выполняет преобразование значений к float.
  • Функция count возвращает количество строк без учета типов данных.
  • Возвращает словарь с результатом агрегации.

5. Вывод результатов

Функция display_results():

  • Использует tabulate для форматированного вывода таблиц.
  • Разные форматы вывода для фильтрации и агрегации.
  • Цветовой вывод через colorama для выделения информации.

6. Обработка аргументов командной строки

Функция main():

  • Использует argparse для парсинга аргументов:
    • --file — путь к CSV-файлу (обязательный)
    • --where — условие фильтрации
    • --aggregate — условие агрегации
  • Последовательность шагов:
    • Загрузка данных
    • Применение фильтрации
    • Применение агрегации
    • Вывод результата

Выбранные решения и обоснования

  • Использование только стандартных библиотек Python (кроме tabulate и colorama).
  • Простое и понятное разделение функций по единой ответственности.
  • Ограничение на одно условие фильтрации и одну колонку для агрегации упрощает логику и соответствует требованиям прототипа.
  • Использование tabulate и colorama обеспечивает удобочитаемый и наглядный вывод.

Ограничения реализации

  • Только одно условие фильтрации за один вызов.
  • Только одна колонка для агрегации за один вызов.
  • Поддерживаются только операторы сравнения: >, <, =.
  • Для функций агрегации (кроме count) колонка должна содержать числовые данные.

Назначение

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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages