Функция Pandas Series.mean()
Часто используемые функции 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()для вычисления среднего значения.
Пример
# Создайте 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 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) можно указать, по какому уровню вычислять среднее.
Пример
# Создать 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 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()), чтобы лучше отразить центральное положение данных.