Pandas Describe: Описательная статистика вашего Dataframe
В этом руководстве вы узнаете, как использовать метод Pandas describe, который используется для вычисления сводной статистической информации для вашего DataFrame Pandas. По окончании прочтения этого руководства вы научитесь использовать метод Pandas .describe()
для генерации сводной статистики и модифицировать его с помощью различных параметров, чтобы обеспечить получение желаемых результатов.
Понимание ваших данных с помощью статистических сводок является важным первым шагом в вашем разведывательном анализе данных (EDA). Это полезный начальний этап в вашей работе с данными, который открывает возможности для дальнейшего изучения статистики.
Метод Pandas .describe()
предоставляет обобщённые описательные статистики, которые суммируют центральную тенденцию ваших данных, разброс и форму распределения набора данных. Он также предоставляет полезную информацию о пропущенных данных
Быстрый ответ: описание Pandas предоставляет полезную сводную статистику
# Понимание метода Pandas .describe()
import pandas as pd
df.describe(
percentiles=None, # Список перцентилей для расчета
include=None, # Столбцы или типы данных для включения
exclude=None, # Типы данных для исключения
datetime_is_numeric=False # Следует ли рассматривать даты и время как числовые значения
)
Оглавление
Загрузка образца Pandas Dataframe
Если вы хотите следовать вместе с уроком по методу describe в Pandas, вы можете скопировать код ниже. Этот код создаст DataFrame на основе библиотеки Seaborn (которую я подробно рассматриваю здесь). Библиотека предоставляет множество наборов данных для различных сценариев. Эти наборы данных доступны через функцию load_dataset()
.
Если у вас не установлен Seaborn, вы можете установить его с помощью pip или conda. Для установки через pip просто введите pip install seaborn
в ваш терминал
Давайте загрузим образец dataframe, чтобы следовать вместе с ним:
# Загрузка примера DataFrame Pandas
from seaborn import load_dataset # Импорт функции load_dataset из библиотеки seaborn
df = load_dataset('penguins') # Загрузка набора данных 'penguins' в DataFrame df
print(df.head()) # Вывод первых 5 строк DataFrame
# Результат:
# species island bill_length_mm bill_depth_mm flipper_length_mm body_mass_g sex
# 0 Adelie Torgersen 39.1 18.7 181.0 3750.0 Male
# 1 Adelie Torgersen 39.5 17.4 186.0 3800.0 Female
# 2 Adelie Torgersen 40.3 18.0 195.0 3250.0 Female
# 3 Adelie Torgersen NaN NaN NaN NaN NaN
# 4 Adelie Torgersen 36.7 19.3 193.0 3450.0 Female
Посмотрев на первые пять записей нашего датафрейма с помощью метода Pandas .head()
, мы видим, что в датафрейме семь столбцов. Некоторые из них числовые, а другие содержат строковые значения. Однако, помимо этого, мы не знаем много о данных в датафрейме, например, о распределении самих данных.
Здесь на помощь приходит метод describe в Pandas! В следующем разделе вы узнаете, как сгенерировать некоторые сводные статистические данные с помощью метода describe в Pandas.
Понимание метода описания панд Pandas
Метод describe библиотеки Pandas — это полезный метод датафрейма, который возвращает описательные и сводные статистические данные. Метод возвращает такие элементы, как:
Количество предметов
Меры рассеивания
Меры центральной тенденции
Процентили данных
Максимальные и минимальные значения
Давайте разберем различные аргументы, доступные в методе .describe()
библиотеки Pandas
percentiles=
[.25, .5, .75]
Процентили, которые необходимо включить в вывод. Значения должны находиться в диапазоне от 0 до 1. Значения должны быть отформатированы в виде массива чисел, подобного списку.
include=
None
Список разрешённых типов данных для включения в результат. Принимается: – «все»: включить все столбцы – список типов данных для включения – Нет: включить все числовые столбцы
exclude=
None
Черный список типов данных для исключения из результата. Принимается: – массив типов данных в виде списка для исключения – None: включить все числовые стол
datetime_is_numeric=
False
Относиться ли к дате и времени как к числовым значениям, что влияет на рассчитываемую статистику для столбца. (Новое в версии v1.1.0)
Посмотрим, что произойдет, если применить метод с параметрами по умолчанию:
# Запуск метода .describe() DataFrame Pandas с параметрами по умолчанию
from seaborn import load_dataset # Импорт функции load_dataset из библиотеки seaborn
df = load_dataset('penguins') # Загрузка набора данных 'penguins' в DataFrame df
print(df.describe()) # Вывод описательной статистики DataFrame
# Результат:
# bill_length_mm bill_depth_mm flipper_length_mm body_mass_g
# count 342.000000 342.000000 342.000000 342.000000
# mean 43.921930 17.151170 200.915205 4201.754386
# std 5.459584 1.974793 14.061714 801.954536
# min 32.100000 13.100000 172.000000 2700.000000
# 25% 39.225000 15.600000 190.000000 3550.000000
# 50% 44.450000 17.300000 197.000000 4050.000000
# 75% 48.500000 18.700000 213.000000 4750.000000
# max 59.600000 21.500000 231.000000 6300.000000
Для числовых столбцов датафрейм возвращает ключевые сводные статистики, описанные выше.
Аналогично, если вы хотите описать только один столбец, вы можете применить метод .describe()
к серии Pandas (или столбцу). Давайте посмотрим, как это выглядит:
print(df['body_mass_g'].describe()) # Вывод описательной статистики столбца 'body_mass_g'
# Результат:
# count 342.000000
# mean 4201.754386
# std 801.954536
# min 2700.000000
# 25% 3550.000000
# 50% 4050.000000
# 75% 4750.000000
# max 6300.000000
# Name: body_mass_g, dtype: float64
В следующем разделе вы узнаете, как изменить процентные значения данных, используя параметр percentiles=
.
Указание процентилей в Pandas Describe
В описательной статистике перцентиль используется для определения того, сколько значений в ряду меньше данного перцентиля. Например, если мы определяем значение для 75-го перцентиля, это означает, что 75% значений ниже этого значения.
По умолчанию Pandas назначает процентили [.25, .5, .75]
, что означает, что мы получаем значения для 25го, 50го и 75го процентилей
Мы можем передать любой массив чисел, при условии, что все значения находятся в диапазоне от 0 до 1. Посмотрим, как мы можем изменить это, чтобы определить перцентили, а именно 10%, 50% и 90%:
print(df.describe(percentiles=[.1, .5, .9])) # Вывод описательной статистики DataFrame с указанными перцентилями
# Результат:
# bill_length_mm bill_depth_mm flipper_length_mm body_mass_g
# count 342.000000 342.000000 342.000000 342.000000
# mean 43.921930 17.151170 200.915205 4201.754386
# std 5.459584 1.974793 14.061714 801.954536
# min 32.100000 13.100000 172.000000 2700.000000
# 10% 36.600000 14.300000 185.000000 3300.000000
# 50% 44.450000 17.300000 197.000000 4050.000000
# 90% 50.800000 19.500000 220.900000 5400.000000
# max 59.600000 21.500000 231.000000 6300.000000
Указав перцентили, мы можем изменить возвращаемые описательные статистики. Это позволяет нам видеть различные распределения данных по нашему датафрейму.
В следующем разделе вы узнаете, как указать типы данных для включаемых столбцов.
Указание столбцов Dataframe для включения с помощью Pandas Describe
По умолчанию метод describe в Pandas будет включать только числовые столбцы. Это связано, в частности, с тем, что только числовые значения могут использоваться для вычисления среднего или процентилей. Аргумент позволяет нам передавать такие значения, как 'all'
, который включает все столбцы. Также возможно передать список различных типов данных для включения. Это может быть полезно, например, когда числовые столбцы закодированы, и вы не хотите их включать.
Давайте посмотрим, как мы можем изменить поведение методов, чтобы включить все столбцы.
print(df.describe(include='all')) # Вывод описательной статистики DataFrame, включая все столбцы (числовые и категориальные)
# Результат:
# species island bill_length_mm bill_depth_mm flipper_length_mm body_mass_g sex
# count 344 344 342.000000 342.000000 342.000000 342.000000 333
# unique 3 3 NaN NaN NaN NaN 2
# top Adelie Biscoe NaN NaN NaN NaN Male
# freq 152 168 NaN NaN NaN NaN 168
# mean NaN NaN 43.921930 17.151170 200.915205 4201.754386 NaN
# std NaN NaN 5.459584 1.974793 14.061714 801.954536 NaN
# min NaN NaN 32.100000 13.100000 172.000000 2700.000000 NaN
# 25% NaN NaN 39.225000 15.600000 190.000000 3550.000000 NaN
# 50% NaN NaN 44.450000 17.300000 197.000000 4050.000000 NaN
# 75% NaN NaN 48.500000 18.700000 213.000000 4750.000000 NaN
# max NaN NaN 59.600000 21.500000 231.000000 6300.000000 NaN
Теперь мы видим, что все столбцы включены в вывод метода describe. Мы можем заметить, что теперь это включает различные метрики, такие как unique
и top
.
Обрабатывать столбцы DateTime как числовые в Pandas Describe
В версии Pandas 1.1 был введен новый аргумент. Этот аргумент, datetime_isnumeric=
, позволяет обрабатывать значения datetime как числовые, а не как строковые значения.
Загрузим другой фрейм данных, чтобы увидеть, как работает этот аргумент. Мы оставим значение по умолчанию, а затем переключим его на True
и посмотрим, как это изменит ситуацию.
import pandas as pd
# Создание DataFrame из словаря
df = pd.DataFrame.from_dict({
'Date': ['2021-12-01', '2021-12-02', '2021-12-03', '2021-12-04', '2021-12-05'], # Даты
'Values': [100, 120, 140, 160, 180] # Значения
})
print(df.describe()) # Вывод описательной статистики DataFrame
# Результат:
# Values
# count 5.000000
# mean 140.000000
# std 31.622777
# min 100.000000
# 25% 120.000000
# 50% 140.000000
# 75% 160.000000
# max 180.000000
По умолчанию столбец Date не включен. Давайте не будем изменять аргумент datetime_isnumeric=
на True
и посмотрим, как это изменит вывод:
print(df['Date'].describe(datetime_is_numeric=True)) # Вывод описательной статистики столбца 'Date' с datetime_is_numeric=True
# Результат:
# count 5
# unique 5
# top 2021-12-01
# freq 1
# Name: Date, dtype: object
Мы можем заметить, что при обработке значений даты и времени как числовых данных, мы можем получить ключевые статистические данные о них, включая количество, число уникальных элементов и частоту наиболее часто встречающихся значений.
Заключение
В этом уроке вы узнали, как использовать метод Pandas .describe()
, который является полезным методом для получения обобщенной статистики по вашему датафрейму. Вы узнали, как использовать метод описания для указания определенных процентилей и как включать или исключать столбцы на основе типов данных.
Чтобы узнать больше о методе Pandas describe, ознакомьтесь с официальной документацией здесь.
Last updated