Описание схемы DataFrame: dtype, пропуски и уникальные значения

Перед подключением новой таблицы к ML-проекту нужно получить понятное описание её колонок. Реализуйте solve(payload), которая вернёт схему DataFrame в формате из условия. Разбор подготовки данных, оценки и деплоя моделей продолжайте в платном курсе «Data Scientist: от данных до деплоя моделей» — откройте программу.

Автоматическое извлечение описания схемы таблицы

Ваша задача — реализовать функцию, которая по таблице (DataFrame) автоматически формирует структурированное описание схемы данных.

Описание схемы должно включать для каждого столбца:

  • имя колонки;
  • тип данных (pandas dtype как строка);
  • признак, есть ли пропуски (True/False);
  • признак уникальности значений (True/False);
  • количество уникальных значений;
  • примеры первых 3 уникальных значений (список).

Функция должна вернуть список словарей с описанием каждого столбца.

Это полезно для инвентаризации источников данных и является первым шагом к формальному описанию схемы таблицы.

Вход

  • payload["df"] — pandas DataFrame с данными таблицы.

Выход

  • список словарей, каждый словарь описывает одну колонку с ключами:
    • column_name (str)
    • dtype (str)
    • has_nulls (bool)
    • is_unique (bool)
    • unique_count (int)
    • sample_values (list)

Ограничения

  • Если во входном DataFrame отсутствуют колонки, функция должна корректно обработать такую ситуацию (вернуть пустой список).

Example test

Вход:


import pandas as pd
payload = {
    "df": pd.DataFrame({
        "id": [1, 2, 3, 4],
        "category": ["A", "B", "A", None],
        "value": [10.0, 15.5, 10.0, 20.0]
    })
}

Ожидаемый вывод (ключи могут идти в любом порядке):


[
    {"column_name": "id", "dtype": "int64", "has_nulls": False, "is_unique": True, "unique_count": 4, "sample_values": [1,2,3]},
    {"column_name": "category", "dtype": "object", "has_nulls": True, "is_unique": False, "unique_count": 2, "sample_values": ["A", "B"]},
    {"column_name": "value", "dtype": "float64", "has_nulls": False, "is_unique": False, "unique_count": 3, "sample_values": [10.0, 15.5, 20.0]}
]

РешениеPython

Без регистрации. Гостевая проверка не сохраняет прогресс. Для сохранения перейдите к уроку.

Отправьте решение, чтобы увидеть результаты тестов.

Связанные задачи