DataFrame.describe() — быстрая статсводка по DataFrame

describe() считает базовую описательную статистику по числовым колонкам: количество непустых, среднее, стандартное отклонение, минимум, квартили (25/50/75%) и максимум. Это первый шаг EDA — увидеть масштаб, разброс и выбросы за одну строку. Для строковых/категориальных колонок вывод другой: count, unique, top, freq. Поведением управляют include, exclude и percentiles.

Синтаксис

df.describe(percentiles=None, include=None, exclude=None)

Примеры использования

Пример 1: Сводка по числовой колонке

df['amount'].describe()

Результат:

count       6.00
mean     1058.33
std       666.83
min       300.00
25%       637.50
50%      1000.00
75%      1425.00
max      2100.00

Пример 2: Сводка по строковой колонке

df['channel'].describe()

Результат:

count       6
unique      3
top       ads
freq        3
Name: channel, dtype: object

Пример 3: Все колонки сразу

df.describe(include='all')

Результат:

        user_id channel   amount
count       6.0       6     6.00
unique      NaN       3      NaN
top         NaN     ads      NaN
mean      543.0     NaN  1058.33
Порешать Python-задачи в тренажёре →

Типичная ошибка

По умолчанию describe() берёт только числовые колонки; чтобы включить строковые, нужен include='all' или include=[object]. NaN игнорируются в count и статистиках, поэтому count по колонкам может различаться. Сумма и число уникальных не считаются для числовых — describe() не заменяет agg, а квартили по умолчанию линейно интерполируются.

Где спрашивают на собеседовании

Первое, что делают на EDA и о чём спрашивают в задачах «опиши датасет». Идёт в паре с .info(), .value_counts() и groupby().describe() для разреза статистики по сегментам.

FAQ: частые вопросы про describe

Почему describe() не показывает строковые колонки?

По умолчанию он берёт только числовые типы. Передай include='all', чтобы увидеть все колонки, или include=['object'] — только строковые/категориальные. Для них выводятся count, unique, top и freq вместо среднего и квартилей.

Как добавить свои процентили, например 90-й и 99-й?

Передай их в percentiles списком долей: df.describe(percentiles=[0.9, 0.99]). Медиана (50%) добавляется всегда, даже если её нет в списке. Значения указываются как доли от 0 до 1, а не в процентах.

Учитывает ли describe() пропущенные значения?

NaN исключаются из всех расчётов, а count показывает число непустых значений в колонке. Поэтому у колонок с разным числом пропусков count будет отличаться. Чтобы узнать количество NaN, используй df.isna().sum().

Задачи в тренажёре по теме

Смежные темы Python

Pandas: основы · Pandas groupby

Другие функции pandas

groupby · merge · pivot_table · apply · value_counts · drop_duplicates

Открыть Python-тренажёр (556 задач) →