Pandas Quantile: Расчет процентилей в DataFrame
В этом руководстве вы научитесь использовать функцию quantile
в Pandas для расчета процентилей и квантилей вашего DataFrame в Pandas. Умение рассчитывать квантили и процентили позволяет легко сравнивать данные с другими значениями в данных. Вы узнаете, как использовать метод quantile в Pandas для расчета процентилей и квартилей, а также как использовать различные параметры для изменения поведения метода.
Почему вам может понадобиться рассчитать процентиль
Как рассчитать один процентиль столбца Pandas
Как вычислить несколько процентилей или квартилей столбца Pandas
Как рассчитать процентили всего кадра данных
Как изменить интерполяцию значений при расчете процентилей
Быстрый ответ: Используйте функцию quantile
в Pandas для расчета процентилей
Обновлено в апреле 2023 года: Я обновил пост, добавив больше примеров и объяснений функции quantile()
в Pandas. Также я обновил пост, чтобы отразить изменения, сделанные в Pandas 2.0.
Содержание
Что такое процентиль?
Процентиль указывает на число, ниже которого падает определенный процент значений. Например, если мы рассчитываем 90-й процентиль, тогда мы получаем число, ниже которого располагается 90% всех остальных чисел. Это имеет много полезных применений, например, в образовании. Набрать результат в 90-м процентиле не означает, что вы набрали 90% на тесте, а то, что вы показали результат лучше, чем 90% других участников тестирования.
Квартиль делит данные на четыре равные части, каждая из которых содержит 25% значений. Таким образом, квартиль разделяет данные на процентили: 0%, 25%, 50% и 75%.
Вычисление процентиля имеет множество полезных применений, например, при работе с выбросами. Поскольку выбросы могут сильно влиять на модели машинного обучения, искажая их производительность, важно быть в курсе их наличия. Например, вы можете захотеть знать, сколько значений попадает внутрь и вне 5-го и 95-го процентилей, чтобы понять, какое искажение данных ожидать.
Давайте начнем с изучения того, как рассчитать перцентиль в Pandas с использованием функции quantile
Загрузка образца фрейма данных Pandas
Давайте начнем с загрузки образца DataFrame в Pandas. Если у вас есть свои данные, не стесняйтесь использовать их. Однако, если вы хотите следовать этому руководству шаг за шагом, скопируйте код ниже, чтобы сгенерировать наш DataFrame:
Мы видим, что загрузили DataFrame Pandas с оценками студентов. У нас есть один столбец 'object'
, содержащий имена студентов, и три других числовых столбца с оценками студентов.
Теперь давайте углубимся в понимание того, как работает quantile
метод Pandas.
Обзор квантильного метода Pandas
Метод quantile
в Pandas работает как с отдельной серией Pandas, так и со всем DataFrame Pandas. По умолчанию он возвращает 50-й процентиль и использует линейную интерполяцию для расчета данных.
Давайте посмотрим, как выглядит метод и какие параметры предоставляет метод quantile
.
Давайте рассмотрим различные параметры, которые предлагает метод quantile
в Pandas. Аргументы по умолчанию представлены в квадратных скобках []
. **Начиная с апреля 2023 года с Pandas 2.0, аргумент по умолчанию для numeric_only
установлен в False
. Это оказывает большое влияние на устаревший код, требуя от вашего кода быть более явным
q=[0.5]
: число с плавающей точкой или массив, указывающий значение(я) квантилей для расчетаaxis=[0]
: ось для расчета процентилей (0 для расчета по строкам и 1 для расчета по столбцам)Если
numeric_only=[True]
установлено вFalse
, вычисляйте значения также для столбцов datetime и timedelta.interpolation=['linear']
: если квантили находятся между двумя значениями, как интерполировать значения
Теперь, когда вы узнали о различных доступных аргументах, давайте перейдем к расчету процентиля для заданного столбца.
Используйте квантиль Pandas для расчета одного процентиля
В этом разделе вы узнаете, как рассчитать один конкретный процентиль в столбце DataFrame с использованием метода quantile
. Мы можем применить этот метод к указанному столбцу, и как результат, получим значение процентиля. Давайте посмотрим, как это делается:
По умолчанию Pandas использует параметр q=0.5
, что соответствует 50-му процентилю. Если нам нужно, например, вычислить 90-й процентиль, мы можем передать значение q=0.9
в параметры:
Мы видели, что при передаче только одного значения в аргумент q=
, возвращается одно значение. Но что, если нам нужно рассчитать несколько процентилей для одного столбца Pandas? В следующем разделе вы узнаете, как это сделать.
Используйте квантиль Pandas для расчета нескольких процентилей
Возможны ситуации, когда вам нужно рассчитать несколько различных перцентилей для столбца в Pandas. Аргумент q=
может принимать как одно число, так и массив чисел, для которых мы хотим выполнить расчет.
Чтобы рассчитать несколько перцентилей, мы просто передаем список значений для различных перцентилей, которые хотим вычислить. Давайте посмотрим, как это выглядит:
Этот код возвращает ряд Pandas, содержащий различные значения процентилей. Если нам нужно получить доступ к одному значению в этом ряду, мы можем просто выбрать его по индексу. Давайте посмотрим, как мы можем выбрать 90-й процентиль в нашем ряду:
Этот метод будет полезен, если вы хотите одновременно рассчитать несколько процентилей и программно использовать значения этих процентилей.
В следующем разделе вы узнаете, как использовать Pandas для расчета процентилей всего датафрейма.
Используйте квантиль Pandas для расчета процентилей кадра данных
Во многих случаях вам может потребоваться вычислить процентили по всем столбцам в dataframe. В нашем примере есть столбцы, которые показывают оценки разных учеников по различным предметам. Вместо того, чтобы вычислять процентили для каждого предмета, мы можем просто рассчитать процентили для всего dataframe, тем самым ускорив наш рабочий процесс.
Давайте посмотрим, как это работает, вычислив 90-й процентиль для каждого столбца:
Мы видим, насколько легко было рассчитать отдельный процентиль для всех колонок в DataFrame Pandas. Начиная с Pandas 2.0, вам будет необходимо установить параметр numeric_only=
в значение True
. Это серьезное отличие от предыдущих версий, где этот параметр был установлен в значение True
по умолчанию.
Если вы хотите рассчитать несколько процентилей для всего датафрейма, вы можете передать список значений для расчета. Давайте рассчитаем несколько различных процентилей, используя метод quantile
в Pandas:
Мы видим, что Pandas фактически возвращает dataframe, содержащий разбивку по процентилям по разным столбцам. Мы можем использовать .loc
или .iloc
для выбора данных.
В следующем разделе вы узнаете, как изменить метод интерполяции процентилей в Pandas, когда искомый процентиль попадает между двумя значениями.
Используйте квантиль Pandas для расчета процентилей и изменения интерполяции
При вычислении процентиля вы можете столкнуться с ситуацией, когда процентиль попадает между двумя значениями. В этих случаях необходимо принять решение о способе расчета процентиля. Например, вы можете выбрать среднее значение между двумя значениями, нижнюю / верхнюю границу или интерполированное значение.
Это место, где параметр interpolation=
играет ключевую роль. По умолчанию Pandas будет использовать линейную интерполяцию для генерации процентиля, что означает, что значения будут рассматриваться как линейные, и будет найдено линейно интерполированное значение.
Pandas предлагает ряд настроек для изменения этого поведения. Настройки описаны в таблице ниже, с учетом двух значений i и j:
Интерполяционный аргумент | Описание |
---|---|
linear | Вычисляет на основе линейного предположения по формуле i + (j – i) |
lower | выбирает меньшее значение, i. |
higher | выбирает большее значение, j |
nearest | выбирает ближайшее значение: i или j |
midpoint | вычисляет среднюю точку, используя (i + j)/2 |
Давайте посмотрим, как могут отличаться эти значения для одного столбца:
Посредством выбора типа интерполяции мы можем настроить результаты так, чтобы они соответствовали нашим потребностям.
Визуализация процентилей с помощью коробчатых диаграмм
Мы можем лучше визуализировать процентили, используя боксплоты. Создать красивые боксплоты можно с помощью библиотеки Seaborn для Python. Для создания боксплотов в Seaborn можно использовать функцию
Изображение ниже демонстрирует, как с помощью боксплотов можно визуализировать процентили:
Давайте посмотрим, как мы можем использовать Seaborn для создания боксплота
Это возвращает следующее изображение:
Мы видим, что диаграмма размаха помогает визуализировать, по умолчанию, 25%, 50% и 75% процентили. Диаграммы размаха могут быть чрезвычайно полезным инструментом для понимания процентилей.
Обработка пропущенных значений при вычислении квантилей
По умолчанию Pandas будет игнорировать любые отсутствующие значения при расчете квантилей. Это важно знать, поскольку это влияет на ваше представление о том, как должны быть рассчитаны значения. Если вы хотите изменить способ представления этих значений, вы можете захотеть обработать отсутствующие значения сначала. Аналогично, вы можете удалить отсутствующие значения, поскольку они могут исказить ваш общий анализ.
Заключение
В этом уроке вы научились использовать метод quantile
Pandas для расчёта перцентилей датафрейма. Вы узнали, как перцентили используются в различных областях и как их рассчитывать с помощью Pandas. Вы научились вычислять их для одного перцентиля, для нескольких перцентилей и для всего датафрейма. Также вы узнали, как изменить поведение интерполяции значений, когда перцентиль попадает между двумя значениями.
Чтобы узнать больше о методе quantile
в Pandas, ознакомьтесь с официальной документацией здесь.
Дополнительная документация
Некоторые другие соответствующие статьи представлены ниже:
Учебное пособие по стандартному отклонению Python: объяснение и примеры
Pandas Describe: описательная статистика по вашему фрейму данных
7 способов выборки данных в Pandas
Дисперсия Pandas: расчет дисперсии столбца кадра данных Pandas
Last updated