Pandas Quantile: Расчет процентилей в DataFrame
Last updated
Last updated
В этом руководстве вы научитесь использовать функцию 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
Давайте начнем с загрузки образца DataFrame в Pandas. Если у вас есть свои данные, не стесняйтесь использовать их. Однако, если вы хотите следовать этому руководству шаг за шагом, скопируйте код ниже, чтобы сгенерировать наш DataFrame:
Мы видим, что загрузили DataFrame Pandas с оценками студентов. У нас есть один столбец 'object'
, содержащий имена студентов, и три других числовых столбца с оценками студентов.
Теперь давайте углубимся в понимание того, как работает quantile
метод 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']
: если квантили находятся между двумя значениями, как интерполировать значения
Теперь, когда вы узнали о различных доступных аргументах, давайте перейдем к расчету процентиля для заданного столбца.
В этом разделе вы узнаете, как рассчитать один конкретный процентиль в столбце DataFrame с использованием метода quantile
. Мы можем применить этот метод к указанному столбцу, и как результат, получим значение процентиля. Давайте посмотрим, как это делается:
По умолчанию Pandas использует параметр q=0.5
, что соответствует 50-му процентилю. Если нам нужно, например, вычислить 90-й процентиль, мы можем передать значение q=0.9
в параметры:
Мы видели, что при передаче только одного значения в аргумент q=
, возвращается одно значение. Но что, если нам нужно рассчитать несколько процентилей для одного столбца Pandas? В следующем разделе вы узнаете, как это сделать.
Возможны ситуации, когда вам нужно рассчитать несколько различных перцентилей для столбца в Pandas. Аргумент q=
может принимать как одно число, так и массив чисел, для которых мы хотим выполнить расчет.
Чтобы рассчитать несколько перцентилей, мы просто передаем список значений для различных перцентилей, которые хотим вычислить. Давайте посмотрим, как это выглядит:
Этот код возвращает ряд Pandas, содержащий различные значения процентилей. Если нам нужно получить доступ к одному значению в этом ряду, мы можем просто выбрать его по индексу. Давайте посмотрим, как мы можем выбрать 90-й процентиль в нашем ряду:
Этот метод будет полезен, если вы хотите одновременно рассчитать несколько процентилей и программно использовать значения этих процентилей.
В следующем разделе вы узнаете, как использовать Pandas для расчета процентилей всего датафрейма.
Во многих случаях вам может потребоваться вычислить процентили по всем столбцам в dataframe. В нашем примере есть столбцы, которые показывают оценки разных учеников по различным предметам. Вместо того, чтобы вычислять процентили для каждого предмета, мы можем просто рассчитать процентили для всего dataframe, тем самым ускорив наш рабочий процесс.
Давайте посмотрим, как это работает, вычислив 90-й процентиль для каждого столбца:
Мы видим, насколько легко было рассчитать отдельный процентиль для всех колонок в DataFrame Pandas. Начиная с Pandas 2.0, вам будет необходимо установить параметр numeric_only=
в значение True
. Это серьезное отличие от предыдущих версий, где этот параметр был установлен в значение True
по умолчанию.
Если вы хотите рассчитать несколько процентилей для всего датафрейма, вы можете передать список значений для расчета. Давайте рассчитаем несколько различных процентилей, используя метод quantile
в Pandas:
Мы видим, что Pandas фактически возвращает dataframe, содержащий разбивку по процентилям по разным столбцам. Мы можем использовать .loc
или .iloc
для выбора данных.
В следующем разделе вы узнаете, как изменить метод интерполяции процентилей в 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