Skip to content

Дополнение к коду: вывод статистики и завершение main() #716

Description

@myltik1702

Дополнение к коду: вывод статистики и завершение main()

Добавим недостающую часть функции main() — вывод статистики и сохранение результата.

    # Вывод статистики
    if args.stats:
        stats = processor.describe_extended()
        print("\n! + "="*50)
        print("РАСШИРЕННАЯ СТАТИСТИКА ПО ЧИСЛОВЫМ КОЛОНКАМ")
        print("="*50)
        for col, data in stats.items():
            print(f"\nКолонка: {col}")
            for key, value in data.items():
                print(f"  {key.capitalize()}: {value:.4f}")
    
    elif args.basic_stats:
        stats = processor.describe_extended()
        print("\n" + "="*50)
        print("БАЗОВАЯ СТАТИСТИКА (mean/median/stdev)")
        print("="*50)
        for col, data in stats.items():
            print(f"\nКолонка: {col}")
            for key in ['mean', 'median', 'stdev']:
                if key in data:
                    print(f"  {key.capitalize()}: {data[key]:.4f}")

    # Сохранение результата
    if args.output:
        processor.save_data(args.output, result_data)
    else:
        # Если нет выходного файла — показываем первые 10 строк результата
        print("\n! + "="*50)
        print("РЕЗУЛЬТАТ (первые 10 строк)")
        print("="*50)
        print(result_data.head(10).to_string(index=False))

    logger.info("Обработка завершена")



if __name__ == "__main__":
    main()

Как использовать обновлённую версию

  1. Установите зависимости (если pandas не установлен):
pip install pandas
  1. Сохраните код в файл ii_grut.py.

  2. Примеры запуска из консоли:

# 1. Базовая загрузка и расширенная статистика
python ii_grut.py данные.csv --stats

# 2. Фильтрация: выбрать строки, где Возраст > 18
python ii_grut.py данные.csv --filter Возраст > 18 --output отфильтровано.csv

# 3. Группировка: посчитать сумму продаж по регионам
python ii_grut.py данные.csv --groupby Регион Продажи --agg sum --output итоги.csv

# 4. Базовая статистика (только mean/median/stdev)
python ii_grut.py данные.json --basic-stats

# 5. Комбинированная обработка: фильтрация + группировка + сохранение
python ii_grut.py данные.xlsx \
  --filter Статус == "Активный" \
  --groupby Город Продажи \
  --agg mean \
  --output средние_продажи_по_городам.csv

Новые возможности по сравнению с предыдущей версией

  1. Поддержка форматов: CSV, JSON, Excel (xls/xlsx).
  2. Расширенная фильтрация с операторами: ==, >, <, >=, <=, !=.
  3. Группировка и агрегация по колонкам с функциями: sum, mean, count, min, max.
  4. Два режима статистики:
    • --stats — полная (count, mean, median, stdev, min, max, sum);
    • --basic-stats — только базовая (mean, median, stdev).
  5. Логирование в файл ii_grut.log и консоль.
  6. Удобный вывод результата:
    • сохранение в файл (если указан --output);
    • показ первых 10 строк в консоли (если --output не указан).

Возможные доработки

  • Добавить поддержку SQL‑баз данных.
  • Реализовать визуализацию (графики через matplotlib/seaborn).
  • Добавить валидацию схем данных (например, через pandera).
  • Сделать веб‑интерфейс на Flask/FastAPI.
  • Поддерживать больше форматов (Parquet, XML).

Если нужно добавить какую‑то конкретную функцию или изменить логику — уточните, доработаю код.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions