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

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


Series.mean()является функцией в Pandas, используемой для вычисления среднего значения всех элементов в Series. Среднее значение — один из наиболее часто используемых статистических показателей, представляющий центральную тенденцию набора данных.

Будь то расчёт средней зарплаты, средних продаж или средних оценок,mean()он может помочь вам быстро выполнить задачу. Это ключевой показатель для описания центральной тенденции набора данных.


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

mean()является методом объекта Series, вызываемым напрямую через оператор точка.

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

Series.mean(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(Даже если входное значение является целым числом, возвращаемое значение преобразуется в float)
  • Описание: Возвращает среднее значение всех допустимых элементов в Series. Если все элементы NaN, возвращает NaN.

Примеры

Давайте досконально освоим это на серии примеров от простых к сложным,Series.mean()использование.

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

Самое базовое использование — создать числовой Series и затем вызватьmean()для вычисления среднего значения.

Пример

import pandas as pd

# Создайте Series с оценками студентов
# Смоделируйте экзаменационные баллы 8 студентов в классе
scores = pd.Series([85, 92, 78, 90, 88, 76, 95, 82])

# Вычислите средний балл
average_score = scores.mean()

print("Оценки студентов за экзамен:")
print(scores)
print()
print(f"Средняя оценка: {average_score:.2f} баллов")

Вывод:

学生考试成绩:
0    85
1    92
2    78
3    90
4    88
5    76
6    95
7    82
dtype: int64

平均成绩:85.75 分

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

  • Создан Series, содержащий оценки 8 студентов.
  • mean()Вычисляет сумму всех оценок (685), делённую на количество студентов (8), что даёт среднее значение 85.75.
  • Примечание: возвращаемое значение имеет тип float, даже если входное значение является целым числом.

Пример 2: Обработка данных с пропущенными значениями

Реальные данные часто содержат пропущенные значения,skipnaпараметр определяет, как обрабатывать эти пропущенные значения.

Пример

import pandas as pd
import numpy as np

# Создать Series, содержащий пропущенные значения
# Имитация отсутствия студента на некоторых экзаменах из-за болезни
scores_with_nan = pd.Series([85, 92, np.nan, 90, 88, np.nan, 95, 82])

print("Данные, включая оценки за пропущенные экзамены:")
print(scores_with_nan)
print()

# По умолчанию skipna=True, пропускать NaN при вычислении среднего
average_skipna = scores_with_nan.mean()
print(f"Средняя оценка при skipna=True (по умолчанию): {average_skipna:.2f}")

# Установить skipna=False, возвращать NaN при обнаружении NaN
average_no_skipna = scores_with_nan.mean(skipna=False)
print(f"Средняя оценка при skipna=False: {average_no_skipna}")

Вывод:

包含缺考成绩的数据:
0    85.0
1    92.0
2       NaN
3    90.0
4    88.0
5       NaN
6    95.0
7    82.0
dtype: float64

skipna=True(默认)时的平均成绩:88.67
skipna=False 时的平均成绩:nan

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

  • Когдаskipna=TrueКогда (значение по умолчанию), вычисляется только среднее допустимых значений.
  • Процесс вычисления: (85 + 92 + 90 + 88 + 95 + 82) / 6 = 532 / 6 = 88.67
  • Когдаskipna=FalseКогда, если присутствует NaN, результат возвращает NaN.

Пример 3: Использование Series с MultiIndex

Для Series с иерархическим индексом (MultiIndex) можно указать, по какому уровню вычислять среднее.

Пример

import pandas as pd

# Создать Series с MultiIndex
# Смоделировать оценки студентов из двух классов
multi_index_scores = pd.Series(
    [85, 92, 78, 90, 88, 76, 95, 82],
    index=pd.MultiIndex.from_tuples([
        ('Класс A', 'Студент 1'), ('Класс A', 'Студент 2'), ('Класс A', 'Студент 3'), ('Класс A', 'Студент 4'),
        ('Класс B', 'Студент 1'), ('Класс B', 'Студент 2'), ('Класс B', 'Студент 3'), ('Класс B', 'Студент 4')
    ],
    names=['Класс', 'Студент']
    )
)

print("Оценки студентов из двух классов:")
print(multi_index_scores)
print()

# Вычислить среднюю оценку всех студентов
overall_mean = multi_index_scores.mean()
print(f"Средняя оценка всех студентов: {overall_mean:.2f}")
print()

# Вычислить среднюю оценку по классу (используя параметр level)
class_a_mean = multi_index_scores.xs('Class A', level='Class').mean()
class_b_mean = multi_index_scores.xs('Class B', level='Class').mean()

print(f"Средняя оценка студентов класса A: {class_a_mean:.2f}")
print(f"Средняя оценка студентов класса B: {class_b_mean:.2f}")

Вывод:

两个班级的学生成绩:
班级   学生
A班    学生1    85
       学生2    92
       学生3    78
       学生4    90
B班    学生1    88
       学生2    76
       学生3    95
       学生4    82
dtype: int64

所有学生平均成绩:85.75

A班学生平均成绩:86.25
B班学生平均成绩:85.25

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

  • Создан объект Series с двумя уровнями индекса, названными "Class" и "Student" соответственно.
  • Прямой вызовmean()вычислит среднее всех элементов.
  • Используяxs()метод, вы можете фильтровать данные по определённому уровню и затем вычислить среднее.

Пример 4: Применение в анализе реальных данных

В сочетании с реальными бизнес-сценариями, демонстрируяmean()типичные примеры применения.

Пример

import pandas as pd
import numpy as np

# Создать имитированные данные о ежедневных ценах закрытия акций
stock_prices = pd.Series([
    100.5, 102.3, 98.7, 101.2, 103.5,
    105.2, 103.8, 107.1, 108.3, 106.9
], index=['Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница',
          'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница'])

# Создать данные за две недели
week1 = stock_prices[:5]
week2 = stock_prices[5:]

print("Цены акций за неделю 1:")
print(week1)
print(f"Средняя цена за неделю 1: {week1.mean():.2f}")
print()

print("Цены акций за неделю 2:")
print(week2)
print(f"Средняя цена за неделю 2: {week2.mean():.2f}")
print()

# Вычислить разницу средних цен между двумя неделями
price_diff = week2.mean() - week1.mean()
print(f"Разница средних цен между двумя неделями: {price_diff:.2f}")

Вывод:

第一周股票价格:
周一    100.5
周二    102.3
周三     98.7
周四    101.2
周五    103.5
dtype: float64
第一周平均价格:101.24

第二周股票价格:
周一    105.2
周二    103.8
周三    107.1
周四    108.3
周五    106.9
dtype: float64
第二周平均价格:106.26

两周平均价格差异:5.02

Примечания

  • mean()Возвращаемое значение всегда имеет тип float, даже если все входные данные являются целыми числами.
  • Среднее значение чувствительно к экстремальным значениям (выбросам); экстремальные значения могут значительно повлиять на результат вычисления.
  • Если в данных много пропущенных значений, использованиеskipna=Trueследует учитывать, что среднее значение рассчитывается только по части данных.
  • Для Series, содержащих нечисловые данные, необходимо сначала очистить данные или использоватьnumeric_only=Trueпараметра.

Итог

Series.mean()является одной из наиболее часто используемых статистических функций в Pandas. Её основные возможности включают:

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

Среднее — важный показатель для описания центральной тенденции набора данных, но при наличии экстремальных значений в данных, возможно, стоит рассмотреть использование медианы (median()), чтобы лучше отразить центральное положение данных.

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

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