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.