Метод describe
Метод describe применяется к объекту GroupBy
и возвращает сводную описательную статистику для каждой группы.
По умолчанию метод вычисляет основные статистические показатели:
количество значений, среднее арифметическое, стандартное отклонение,
минимальное значение, квартили и максимальное значение.
Метод полезен для быстрого анализа распределения данных внутри групп.
Синтаксис
groupby_object.describe(percentiles=None, include=None, exclude=None)
Параметры метода:
-
percentiles- список процентилей для вычисления (по умолчанию [0.25, 0.5, 0.75]) -
include- список типов данных для включения (например, 'all', 'number', 'object') -
exclude- список типов данных для исключения
Пример
Создадим таблицу с данными о продажах и сгруппируем по категориям:
import pandas as pd
df = pd.DataFrame({
'category': ['A', 'A', 'B', 'B', 'C', 'C', 'A', 'B'],
'value': [10, 20, 15, 25, 30, 35, 18, 22]
})
grouped = df.groupby('category')
print(grouped.describe())
Результат выполнения кода:
value
count mean std min 25% 50% 75% max
category
A 3.0 16.0 5.291503 10.0 14.0 18.0 19.0 20.0
B 3.0 20.666666 5.131601 15.0 18.5 22.0 23.5 25.0
C 2.0 32.5 3.535534 30.0 31.25 32.5 33.75 35.0
Пример
Выведем статистику с кастомными процентилями для каждой группы:
import pandas as pd
df = pd.DataFrame({
'category': ['X', 'X', 'Y', 'Y', 'Z', 'Z', 'X'],
'value': [5, 15, 10, 20, 25, 30, 12]
})
grouped = df.groupby('category')
print(grouped.describe(percentiles=[0.1, 0.5, 0.9]))
Результат выполнения кода:
value
count mean std min 10% 50% 90% max
category
X 3.0 10.666667 5.131601 5.0 6.0 12.0 14.0 15.0
Y 2.0 15.0 7.071068 10.0 10.5 15.0 19.5 20.0
Z 2.0 27.5 3.535534 25.0 25.5 27.5 29.5 30.0
Пример
Используем метод describe с группировкой по нескольким колонкам:
import pandas as pd
df = pd.DataFrame({
'region': ['North', 'South', 'North', 'South', 'East'],
'product': ['A', 'A', 'B', 'B', 'A'],
'sales': [100, 150, 120, 130, 110],
'profit': [10, 15, 12, 13, 11]
})
grouped = df.groupby(['region', 'product'])
print(grouped.describe())
Результат выполнения кода:
sales profit
count mean std min max count mean std min max
region product
East A 1.0 110.0 NaN 110.0 110.0 1.0 11.0 NaN 11.0 11.0
North A 1.0 100.0 NaN 100.0 100.0 1.0 10.0 NaN 10.0 10.0
B 1.0 120.0 NaN 120.0 120.0 1.0 12.0 NaN 12.0 12.0
South A 1.0 150.0 NaN 150.0 150.0 1.0 15.0 NaN 15.0 15.0
B 1.0 130.0 NaN 130.0 130.0 1.0 13.0 NaN 13.0 13.0
Пример
Получим описательную статистику только для числовых колонок:
import pandas as pd
df = pd.DataFrame({
'group': ['A', 'B', 'A', 'B', 'A'],
'num1': [1, 2, 3, 4, 5],
'num2': [10, 20, 30, 40, 50],
'text': ['x', 'y', 'z', 'w', 'v']
})
grouped = df.groupby('group')
print(grouped.describe(include='number'))
Результат выполнения кода:
num1 num2
count mean std min 25% 50% 75% max count mean std min 25% 50% 75% max
group
A 3.0 3.0 2.0 1.0 2.0 3.0 4.0 5.0 3.0 30.0 20.0 10.0 20.0 30.0 40.0 50.0
B 2.0 3.0 1.414214 2.0 2.5 3.0 3.5 4.0 2.0 30.0 14.142136 20.0 25.0 30.0 35.0 40.0