Функция Pandas Series.quantile()

Pandas 常用函数Часто используемые функции Pandas


Series.quantile()Это функция в Pandas, используемая для вычисления квантилей Series. Квантили — это значения, которые делят упорядоченные данные на несколько равных частей; распространённые из них включают квартили (25%, 50%, 75%), медиану (50%) и т. д.

Квантили — важные показатели для описания распределения данных. Они помогают понять форму распределения и выявить выбросы. Они широко используются в статистическом анализе, ранжировании оценок, анализе доходов и других сценариях.


Базовый синтаксис и параметры

quantile()Это функция-член объекта Series, вызываемая напрямую с помощью оператора-точки.

Формат синтаксиса

Series.quantile(q=0.5, interpolation='linear', numeric_only=True, closed='both')

Описание параметра

Параметр Type Описание Значение по умолчанию
q float или array-like Значение(я) квантиля в диапазоне от 0 до 1. Может быть одним значением или списком из нескольких значений. 0.5
interpolation str Метод интерполяции, используемый, когда квантиль находится между двумя значениями. Возможные значения: 'linear', 'lower', 'higher', 'nearest', 'midpoint'. 'linear'
numeric_only bool Если True, вычисляются только числовые данные. True
closed str Используется в DataFrame для определения замкнутости интервала. Обычно не используется в Series. 'both'

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

    • Тип возвращаемого значения:floatилиSeries
    • ОписаниеВозвращает значение в указанном квантиле. Если q — одиночное значение, возвращает float; если q — список, возвращает Series.

    Примеры

    Давайте подробно разберём на серии примеров от простого к сложному,Series.quantile()использование Series.quantile().

    Пример 1: Базовое использование — вычисление медианы

    Медиана — это 50%-й квантиль, и это наиболее часто используемый квантиль.

    Пример

    import pandas as pd

    # Создайте Series, содержащий баллы студентов
    scores = pd.Series([65, 70, 72, 75, 78, 80, 82, 85, 88, 90, 92, 95])

    print("Баллы студентов:")
    print(scores)
    print()

    # Вычислите медиану (50%-й квантиль)
    median_score = scores.quantile(0.5)

    print(f"Медиана: {median_score}")
    print(f"Использование функции median(): {scores.median()}")
    print()
    print("Анализ: 50% баллов студентов меньше или равны 80.")

    Вывод:

    学生成绩:
    0    65
    1    70
    2    72
    3    75
    4    75
    5    80
    6    80
    7    85
    8    88
    9    90
    10    92
    11    95
    dtype: int64
    
    中位数:80.0
    
    中位数(使用 median() 函数):80.0
    

    Пояснение к коду:

    • quantile(0.5)Эквивалентноmedian()。
    • Медиана делит данные на две половины; 50% данных меньше или равны медиане.

    Пример 2: Вычисление квартилей

    Квартили делят данные на четыре равные части: 25%, 50%, 75%.

    Пример

    import pandas as pd

    # Создать Series, содержащий доход сотрудников
    income = pd.Series([3000, 3500, 3800, 4000, 4200, 4500, 5000, 5500, 6000, 8000, 15000])

    print("Данные о ежемесячном доходе сотрудников (yuan):")
    print(income)
    print()

    # Вычислить три квартиля
    q1 = income.quantile(0.25)   # Первый квартиль (25%)
    q2 = income.quantile(0.50)   # Второй квартиль / медиана (50%)
    q3 = income.quantile(0.75)   # Третий квартиль (75%)

    print(f"Первый квартиль Q1 (25%): {q1} yuan")
    print(f"Второй квартиль Q2 (50%): {q2} yuan")
    print(f"Третий квартиль Q3 (75%): {q3} yuan")
    print()

    # Вычислить межквартильный размах (IQR)
    iqr = q3 - q1
    print(f"Межквартильный размах IQR: {iqr} yuan")
    print()

    print("Анализ:")
    print("- 25% сотрудников получают не более 4000 yuan")
    print("- 50% сотрудников получают не более 5000 yuan")
    print("- 75% сотрудников получают не более 6000 yuan")
    print("- Чем больше IQR, тем больше разброс данных")

    Вывод:

    员工月收入数据(元):
    1    3000
    2    低于 3800
    3    4000
    4    4200
    5    4500
    6    5000
    7    5500
    8    6000
    9    8000
    10   15000
    dtype: int64
    
    Q1(25% 分位):4000.0 元
    Q2(50% 分位):5000.0 元
    Q3(75% 分位):6000.0 元
    
    四分位距 IQR = 6000 - 4000 = 2000 元
    

    Пример 3: Вычисление нескольких квантилей одновременно

    Можно вычислить несколько квантилей одновременно.

    Пример

    import pandas as pd

    # Создание данных
    data = pd.Series([10, 20, 30, 40, 50, 60, 70, 80, 90, 100])

    print("Данные:")
    print(data)
    print()

    # Вычислить несколько квантилей
    percentiles = data.quantile([0, 0.1, 0.25, 0.5, 0.75, 0.9, 1.0])

    print("Квантили:")
    print(percentiles)
    print()

    # Квантиль также можно задать в виде строки с процентом (только одно значение)
    print(f"Использование строки '50%': {data.quantile('50%')}")
    print(f"Использование строки '0.5': {data.quantile(0.5)}")

    Вывод:

    数据:
    0     10
    1     20
    2     30
    3     40
    4     50
    量值:60
    5     70
    6     80
    7     90
    8    100
    dtype: int 参数
    
    多个分位数:
    0.00    10.0
    0.10    19.0
    0.25    32.5
    0.50    50.0
    0.75    67.5
    0.90    81.0
    1.00   100.0
    dtype: float64
    

    Пример 4: Роль параметра interpolation

    Когда квантиль находится между двумя значениями, разные методы интерполяции дают разные результаты.

    Пример

    import pandas as pd

    # Создать Series с 6 элементами
    data = pd.Series([10, 20, 30, 40, 50, 60])

    print("Данные:", data.values)
    print()

    # Вычислить 30%-й квантиль (между 20 и 30)
    # позиция = (n-1) * q = 5 * 0.3 = 1.5
    print("30%-й квантиль с использованием разных методов интерполяции:")

    linear = data.quantile(0.3, interpolation='linear')
    print(f"linear (линейная интерполяция, по умолчанию): {linear}")

    lower = data.quantile(0.3, interpolation='lower')
    print(f"lower (взять меньшее значение): {lower}")

    higher = data.quantile(0.3, interpolation='higher')
    print(f"higher (взять большее значение): {higher}")

    nearest = data.quantile(0.3, interpolation='nearest')
    print(f"nearest (взять ближайшее значение): {nearest}")

    midpoint = data.quantile(0.3, interpolation='midpoint')
    print(f"midpoint (взять среднюю точку): {midpoint}")

    Вывод:

    数据:[10, 20, 30, 40, 50, 60]
    位置计算:(n-1) * q = 5 * 0.3 = 1.5,表示在 20 和 30 之间
    
    不同插值方法的结果:
    - linear(线性插值,默认):23.0
    - lower(向下取整):20.0
    - higher(向上取整):30.0
    - nearest(最近邻):20.0
    - midpoint(中间值):25.0
    

    Пояснение к коду:

    • interpolation='linear'Выполняет линейную интерполяцию между двумя значениями, 20 + (30-20)*0.5 = 23.
    • interpolation='lower'Берёт значение с меньшим индексом, то есть 20.
    • interpolation='higher'Выбирает значение с большим индексом, т. е. 30.
    • interpolation='nearest'Выбирает значение, ближайшее к позиции квантиля.
    • interpolation='midpoint'Выбирает середину двух значений, т. е. (20+30)/2 = 25.

    Пример 5: Использование квантилей для выявления выбросов

    Межквартильный размах (IQR) часто используется для выявления выбросов в данных.

    Пример

    import pandas as pd

    # Создать данные, содержащие несколько выбросов
    data = pd.Series([12, 15, 18, 20, 22, 25, 28, 30, 32, 150])

    print("Данные (с выбросами):")
    print(data)
    print()

    # Вычислить квартили
    q1 = data.quantile(0.25)
    q3 = data.quantile(0.75)
    iqr = q3 - q1

    # Вычислить границы выбросов
    lower_bound = q1 - 1.5 * iqr
    upper_bound = q3 + 1.5 * iqr

    print(f"Q1(25%):{q1}")
    print(f"Q3(75%):{q3}")
    print(f"Межквартильный размах:{iqr}")
    print()
    print(f"Нижняя граница нормальных значений: {lower_bound}")
    print(f"Верхняя граница нормальных значений: {upper_bound}")
    print()

    # Выявление выбросов
    outliers = data[(data upper_bound)]
    print(f"Выбросы: {outliers.values}")
    print()

    print("Анализ: 150 — очевидный выброс, превышающий верхнюю границу.")

    Вывод:

    数据(含异常值):
    3     150
    4     22
    5     25
    6     28
    7     30
    8     32
    9    150
    dtype: int64
    
    Q1(25%):18.75
    Q3(75%):30.25
    IQR = 11.5
    
    正常值下界:1.5
    正常值上界:47.5
    异常值:150
    
    分析:150 明显超出了正常范围,是一个异常值。
    

    Примечания

    • Значение квантиля находится в диапазоне от 0 до 1.
    • По умолчанию для вычисления квантилей используется метод линейной интерполяции.
    • Когда q — список, возвращаемое значение — Series, а не одно значение.
    • Квантили можно использовать для выявления выбросов в данных; распространённый метод — правило IQR (1.5 межквартильного размаха).
    • Для больших наборов данных вычисление квантилей очень эффективно.

    Итог

    Series.quantile()Это важная функция для анализа распределения данных. Её основные возможности включают:

    • Поддерживает вычисление любого квантиля (от 0 до 1).
    • Может вычислять несколько квантилей одновременно.
    • Предоставляет несколько методов интерполяции для удовлетворения различных потребностей.
    • Очень полезно для выявления выбросов.

    В практическом анализе данных квантили часто используются для понимания формы распределения данных, сравнения различных наборов данных, выявления выбросов и т. д. В сочетании с ящичными диаграммами они позволяют более наглядно отображать распределение данных.

    Pandas 常用函数Часто используемые функции Pandas

    Другие расширения