Среднее в Pandas: Как рассчитать среднее для одной или нескольких колонок
В этом посте вы узнаете, как вычислить среднее значение (average) в Pandas для одного столбца, нескольких столбцов или всего датафрейма. Вы также узнаете, как пропустить значения na
или включить их в свой расчет.
Оглавление
Загрузка образца фрейма данных
Если вы хотите использовать пример dataframe для практики, загрузите приведенный ниже образец dataframe. Данные представляют собой зарплаты людей за период в четыре года:
import pandas as pd
df = pd.DataFrame.from_dict(
{
'Year': [2018, 2019, 2020, 2021],
'Carl': [1000, 2300, 1900, 3400],
'Jane': [1500, 1700, 1300, 800],
'Melissa': [800, 2300, None, 2300]
}
).set_index('Year')
print(df)
Это возвращает следующий фрейм данных:
Carl Jane Melissa
Year
2018 1000 1500 800.0
2019 2300 1700 2300.0
2020 1900 1300 NaN
2021 3400 800 2300.0
Pandas среднее значение в одном столбце
Вычислить среднее значение для одного столбца очень просто. Мы можем просто вызвать метод .mean()
для отдельного столбца, и он вернет среднее значение этого столбца.
Например, давайте вычислим среднюю зарплату Карла за все годы:
>>> carl = df['Carl'].mean()
>>> print(carl)
2150.0
Мы можем видеть, что средняя зарплата Карла за четыре года составила 2150
.
Среднее значение Pandas для строки
Теперь предположим, что вы хотите вычислить среднее значение для строки dataframe. Мы можем сделать это, просто изменив параметр axis=
.
Допустим, мы хотим получить среднюю зарплату всех людей за 2018 год. Мы можем получить данные за 2018 год с помощью метода .loc
(о котором вы можете узнать больше в моем руководстве по ссылке).
>>> year_2018 = df.loc[2018,:].mean()
>>> print(year_2018)
1100
Теперь, в качестве альтернативы, вы можете вычислить среднее значение для каждой строки. Вы можете сделать это, не указывая выбор строки и изменив параметр axis=
.
Попробуем это на практике:
row_averages = df.mean(axis=1)
print(row_averages)
Это возвращает следующую серию:
Year
2018 1100.000000
2019 2100.000000
2020 1600.000000
2021 2166.666667
dtype: float64
Если вы хотите вычислить среднее значение нескольких столбцов, вы можете просто применить метод .mean()
к выбранным столбцам.
Среднее значение Pandas по нескольким столбцам
В приведенном ниже примере мы возвращаем средние зарплаты Карла и Джейн. Обратите внимание, что для правильного выбора данных необходимо использовать двойные квадратные скобки:
averages = df[['Carl', 'Jane']].mean()
print(averages)
Это возвращает следующий результат:
Carl 2150.0
Jane 1325.0
dtype: float64
Среднее значение Pandas для всего DataFrame
Наконец, если вы хотите получить среднее значение для каждого столбца в dataframe Pandas, вы можете просто применить метод .mean()
ко всему dataframe.
Попробуем это сделать, написав следующий код:
>>> entire_dataframe = df.mean()
>>> print(entire_dataframe)
Carl 2150.0
Jane 1325.0
Melissa 1800.0
dtype: float64
Теперь вы можете вычислить среднее значение для всего dataframe.
Включить NAs в расчет среднего значения Pandas
Одно важное замечание: по умолчанию пропущенные значения исключаются из расчёта среднего. Таким образом, пропущенное значение обрабатывается как отсутствующее, а не как ноль.
Если вы хотите вычислить среднее значение с учётом пропущенных данных, вы можете сначала присвоить им значения с помощью метода Pandas .fillna()
. Ознакомьтесь с моим руководством по этой ссылке, чтобы узнать больше:
Давайте вычислим среднее значение, включая и исключая пропущенное значение в столбце Melissa:
>>> print(df['Melissa'].mean())
>>> print(df['Melissa'].fillna(0).mean())
1800.0
1350.0
Используйте Pandas Describe для вычисления средних значений
Наконец, давайте воспользуемся методом Pandas .describe()
, чтобы вычислить среднее значение (а также некоторые другие полезные статистики). Чтобы узнать больше о методе Pandas .describe()
, ознакомьтесь с моим руководством по этой ссылке.
Давайте посмотрим, как мы можем получить среднее значение и другие полезные статистики:
>>> print(df.describe())
Carl Jane Melissa
count 4.000000 4.000000 3.000000
mean 2150.000000 1325.000000 1800.000000
std 994.987437 386.221008 866.025404
min 1000.000000 800.000000 800.000000
25% 1675.000000 1175.000000 1550.000000
50% 2100.000000 1400.000000 2300.000000
75% 2575.000000 1550.000000 2300.000000
max 3400.000000 1700.000000 2300.000000
Если вы хотите получить только среднее значение, вы можете просто использовать акцессор .loc
для доступа к данным:
>>> print(df.describe().loc['mean'])
Carl 2150.0
Jane 1325.0
Melissa 1800.0
Name: mean, dtype: float64
Заключение
В этой статье вы узнали, как вычислить среднее значение в Pandas с помощью метода .mean()
. Вы научились вычислять среднее по столбцу, по строке, по нескольким столбцам и по всему dataframe. Кроме того, вы узнали, как рассчитать среднее значение с учетом пропущенных значений.
Чтобы узнать больше о методе .mean()
в Pandas, ознакомьтесь с официальной документацией по этой ссылке.
Last updated