Описание схемы 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]}
]
Без регистрации. Гостевая проверка не сохраняет прогресс. Для сохранения перейдите к уроку.
Отправьте решение, чтобы увидеть результаты тестов.
Связанные задачи
- pandas: количество пропусков по столбцам — задача
- pandas dropna subset: какие строки удаляются и почему
- pandas fillna: заполнение пропусков и nullable-типы Int64
- pandas dropna: how, subset и форма таблицы
- pandas str.strip, lower и replace: очистка строк без циклов
- pandas str.split и str.contains: фильтрация по домену email
