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