DataFrame.quantile() / Series.quantile()

Метод quantile() вычисляет заданные квантили (перцентили) данных. Квантиль 0.5 — это медиана, 0.25/0.75 — нижний и верхний квартили.

Сигнатура

DataFrame.quantile(q=0.5, axis=0, numeric_only=False,
                   interpolation="linear")

Параметры

  • q — число от 0 до 1 либо список таких чисел.

  • axis — ось расчёта.

  • numeric_only — только числовые столбцы.

  • interpolation — метод интерполяции между соседями: "linear", "lower", "higher", "nearest", "midpoint".

Возвращаемое значение

Скаляр, Series или DataFrame в зависимости от q и формы входа.

Примеры

Пример 1. Медиана показаний датчика

import pandas as pd

s = pd.Series([22.0, 22.3, 23.0, 24.0, 25.5])
print(s.quantile(0.5))
23.0

Пример 2. Несколько квантилей

import pandas as pd

s = pd.Series([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
print(s.quantile([0.25, 0.5, 0.75]))
0.25    3.25
0.50    5.50
0.75    7.75
dtype: float64

Пример 3. По столбцам DataFrame

import pandas as pd

df = pd.DataFrame({
    "temp": [22, 23, 24, 25, 26],
    "hum":  [55, 60, 60, 65, 70],
})
print(df.quantile(0.9))
temp    25.6
hum     68.0
Name: 0.9, dtype: float64

Пример 4. Интерполяция nearest

import pandas as pd

s = pd.Series([1, 2, 3, 4])
print("linear:", s.quantile(0.5))
print("nearest:", s.quantile(0.5, interpolation="nearest"))
linear: 2.5
nearest: 2

Пример 5. Поиск выбросов

import pandas as pd

s = pd.Series([22, 23, 22, 100, 24, 23])  # 100 — выброс
q_lo, q_hi = s.quantile([0.05, 0.95])
outliers = s[(s < q_lo) | (s > q_hi)]
print(outliers.tolist())
[100]

См. также

Примечание

Лицензия и источники

Техническое описание функции адаптировано из официальной документации Pandas (https://pandas.pydata.org/docs/), BSD-3-Clause License. Примеры и пояснения — © AlashEd Wiki.