Среднее в 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