Функция Pandas Series.median()
Series.median()Является функцией в Pandas, используемой для вычисления медианы (серединного значения) Series. Медиана — это значение, находящееся в середине после сортировки данных. На неё не влияют экстремальные значения, и она является устойчивым показателем центральной тенденции данных.
Когда в данных есть выбросы или асимметричные распределения, медиана может точнее отражать центральное положение данных, чем среднее. Она часто используется в таких сценариях, как анализ данных о доходах, статистика цен на жильё и анализ оценок.
Базовый синтаксис и параметры
median()Является методом объекта Series, вызываемым напрямую через оператор точки.
Формат синтаксиса
Series.median(axis=None, skipna=True, level=None, numeric_only=None, **kwargs)
Описание параметра
| Параметр | Type | Описание | Значение по умолчанию |
|---|---|---|---|
| axis | int | Указывает ось. Series имеет только одну строку данных, поэтому этот параметр в основном предназначен для совместимости с DataFrame. | Отсутствует |
| skipna | bool | Если True, значения NaN пропускаются при вычислении; если False, результат возвращает NaN при встрече с NaN. | True |
| level | int или str | Если Series имеет MultiIndex, укажите уровень для вычисления. | Отсутствует |
| numeric_only | bool | Если True, вычисляются только числовые данные; в противном случае выполняется попытка преобразования к числовому типу. | False |
Возвращаемое значение
- Тип возвращаемого значения:
float - ОписаниеВозвращает медиану всех элементов в Series. Если количество элементов чётное, возвращает среднее двух средних элементов.
Примеры
Давайте досконально освоим ... с помощью серии примеров от простого к сложному.Series.median()использование.
Пример 1: базовое использование — медиана нечётного числа элементов
Для данных с нечётным количеством элементов медиана — это значение, расположенное посередине после сортировки.
Пример
# Создайте Series, содержащий доходы сотрудников
# Смоделируем ежемесячный доход 7 сотрудников в отделе (единица измерения: тыс. юаней)
income = pd.Series([5, 6, 7, 8, 9, 10, 50])
# Вычисляем медиану
median_income = income.median()
print("Ежемесячный доход сотрудников (тыс. юаней):")
print(income)
print()
print(f"Средний доход: {income.mean():.2f} тыс. юаней")
print(f"Медианный доход: {median_income} тыс. юаней")
print()
print("Примечание: на среднее значение сильно влияет экстремальное значение (50 тыс. юаней), тогда как медиана лучше отражает истинный уровень.")
Вывод:
员工月收入(千元): 0 5 1 6 2 7 3 8 4 9 5 10 6 50 dtype: int64 平均收入:13.57 千元 中位数收入:8.0 千元
Анализ кода:
- После сортировки данных: [5, 6, 7, 8, 9, 10, 50]
- Позиция середины — 4-й элемент (индекс 3), со значением 8.
- Поскольку есть экстремальное значение (50), среднее (13.57) завышается, тогда как медиана (8) лучше отражает уровень дохода большинства людей.
Пример 2: медиана для чётного числа элементов
Для данных с чётным числом элементов медиана — это среднее двух средних элементов.
Пример
# Создать Series с 6 элементами
# Смоделировать экзаменационные баллы 6 студентов
scores = pd.Series([75, 82, 88, 92, 95, 100])
# Вычисляем медиану
median_score = scores.median()
print("Оценки студентов за экзамен:")
print(scores)
print()
print(f"Средний балл: {scores.mean():.2f}")
print(f"Медианный балл: {median_score}")
Вывод:
学生考试成绩: 0 75 1 82 2 88 3 92 4 95 5 100 dtype: int64 平均成绩:88.67 中位数成绩:90.0
Анализ кода:
- После сортировки данных: [75, 82, 88, 92, 95, 100]
- Два средних элемента — 88 и 92 (индексы 2 и 3).
- Медиана = (88 + 92) / 2 = 90.
Пример 3: Обработка данных, содержащих пропущенные значения
skipnaПараметр определяет, как обрабатываются пропущенные значения.
Пример
import numpy as np
# Создать Series с пропущенными значениями
data_with_nan = pd.Series([10, 20, np.nan, 30, 40, np.nan, 50])
print("Данные с пропущенными значениями:")
print(data_with_nan)
print()
# По умолчанию skipna=True, NaN пропускается при вычислении медианы
median_skipna = data_with_nan.median()
print(f"Медиана при skipna=True (по умолчанию): {median_skipna}")
# Установить skipna=False
median_no_skipna = data_with_nan.median(skipna=False)
print(f"Медиана при skipna=False: {median_no_skipna}")
Вывод:
包含缺失值的数据: 0 10.0 1 20.0 2 NaN 3 30.0 4 40.0 5 NaN 6 50.0 dtype: float64 skipna=True(默认)时的中位数:30.0 skipna=False 时的中位数:nan
Анализ кода:
- Корректные данные: [10, 20, 30, 40, 50], всего 5 элементов.
- После сортировки берём значение из середины: 30.
skipna=FalseКогда ..., при наличии NaN возвращается NaN.
Пример 4: Сценарии применения сравнения среднего значения и медианы
Демонстрирует преимущество медианы при работе с асимметричными данными.
Пример
# Смоделировать данные о ежемесячном доходе 10 домохозяйств в жилом районе
# У большинства людей доход составляет от 3000 до 5000 юаней, но есть несколько человек с высоким доходом
income_data = pd.Series([3000, 3500, 3800, 4000, 4200, 4500, 4800, 5000, 8000, 50000])
print("Данные о ежемесячном доходе жителей микрорайона (юаней):")
print(income_data)
print()
mean_income = income_data.mean()
median_income = income_data.median()
print(f"Среднее: {mean_income:.2f} юаней")
print(f"Медиана: {median_income} yuan")
print()
print("Анализ:")
print("Среднее значение (10380 yuan) сильно завышено экстремальным значением (50000 yuan).")
print("Медиана (4350 yuan) лучше отражает истинный уровень доходов большинства домохозяйств.")
print("Именно поэтому статистические ведомства чаще используют медиану при публикации данных о доходах.")
Вывод:
小区住户月收入数据(元): 0 3000 1 3500 2 3800 3 4000 4 4200 5 4500 6 4800 7 5000 8 8000 9 50000 dtype: int64 平均值:10380.00 元 中位数:4350.0 元
Примечания
- Медиана нечувствительна к экстремальным значениям и более устойчива, чем среднее.
- Когда количество точек данных чётное, медиана — это среднее двух центральных чисел.
- Когда распределение данных имеет значительную асимметрию, медиана лучше отражает центральное положение данных, чем среднее.
skipnaПоведение параметра являетсяmean()одинаковым.
Итог
Series.median()Это важная функция для описания центральной тенденции данных. Её основные особенности включают:
- Не подвержен влиянию экстремальных значений, результат вычислений устойчив.
- Для чётного числа элементов возвращает среднее двух центральных элементов.
- Особенно полезно при анализе данных с асимметричными распределениями, такими как доходы и цены на жильё.
- Синтаксис и параметры
mean()абсолютно такие же, легко изучать и использовать.
В практическом анализе данных рекомендуется вычислять как среднее, так и медиану, чтобы более полно понять характеристики распределения данных. Когда разница между ними велика, это указывает на то, что данные могут иметь асимметричное распределение или выбросы.
Другие расширения
Pandas: общие функции