# Среднее в Pandas: Как рассчитать среднее для одной или нескольких колонок

В этом посте вы узнаете, как вычислить среднее значение (average) в Pandas для одного столбца, нескольких столбцов или всего датафрейма. Вы также узнаете, как пропустить значения `na` или включить их в свой расчет.

Оглавление

* [Загрузка образца фрейма данных](#zagruzka-obrazca-freima-dannykh)
* [Pandas среднее значение в одном столбце](#pandas-srednee-znachenie-v-odnom-stolbce)
* [Среднее значение Pandas для строки](#srednee-znachenie-pandas-dlya-stroki)
* [Среднее значение Pandas по нескольким столбцам](#srednee-znachenie-pandas-po-neskolkim-stolbcam)
* [Среднее значение Pandas для всего DataFrame](#srednee-znachenie-pandas-dlya-vsego-dataframe)
* [Учитывать NA при вычислении среднего значения Pandas](#vklyuchit-nas-v-raschet-srednego-znacheniya-pandas)
* [Использовать метод Pandas Describe для вычисления средних значений](#ispolzuite-pandas-describe-dlya-vychisleniya-srednikh-znachenii)
* [Заключение](#zaklyuchenie)

### Загрузка образца фрейма данных

Если вы хотите использовать пример <mark style="color:purple;">dataframe</mark> для практики, загрузите приведенный ниже образец dataframe. Данные представляют собой зарплаты людей за период в четыре года:

```python
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)
```

Это возвращает следующий фрейм данных:

```python
      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()` для отдельного столбца, и он вернет среднее значение этого столбца.

Например, давайте вычислим среднюю зарплату Карла за все годы:

```python
>>> carl = df['Carl'].mean()
>>> print(carl)

2150.0
```

Мы можем видеть, что средняя зарплата Карла за четыре года составила `2150`.

### Среднее значение Pandas для строки

Теперь предположим, что вы хотите вычислить среднее значение для строки dataframe. Мы можем сделать это, просто изменив параметр `axis=`.

Допустим, мы хотим получить среднюю зарплату всех людей за 2018 год. Мы можем получить данные за 2018 год с помощью метода `.loc` (о котором вы можете узнать больше в моем руководстве по ссылке).

```python
>>> year_2018 = df.loc[2018,:].mean()
>>> print(year_2018)

1100
```

Теперь, в качестве альтернативы, вы можете вычислить среднее значение для каждой строки. Вы можете сделать это, не указывая выбор строки и изменив параметр `axis=`.

Попробуем это на практике:

```python
row_averages = df.mean(axis=1)
print(row_averages)
```

Это возвращает следующую серию:

```python
Year
2018    1100.000000
2019    2100.000000
2020    1600.000000
2021    2166.666667
dtype: float64
```

Если вы хотите вычислить среднее значение нескольких столбцов, вы можете просто применить метод `.mean()` к выбранным столбцам.

### Среднее значение Pandas по нескольким столбцам

В приведенном ниже примере мы возвращаем средние зарплаты Карла и Джейн. Обратите внимание, что для правильного выбора данных необходимо использовать двойные квадратные скобки:

```python
averages = df[['Carl', 'Jane']].mean()
print(averages)
```

Это возвращает следующий результат:

```python
Carl    2150.0
Jane    1325.0
dtype: float64
```

### Среднее значение Pandas для всего DataFrame

Наконец, если вы хотите получить среднее значение для каждого столбца в dataframe Pandas, вы можете просто применить метод `.mean()` ко всему dataframe.

Попробуем это сделать, написав следующий код:

```python
>>> entire_dataframe = df.mean()
>>> print(entire_dataframe)

Carl       2150.0
Jane       1325.0
Melissa    1800.0
dtype: float64
```

Теперь вы можете вычислить среднее значение для всего dataframe.

### Включить NAs в расчет среднего значения Pandas

Одно важное замечание: по умолчанию пропущенные значения исключаются из расчёта среднего. Таким образом, пропущенное значение обрабатывается как отсутствующее, а не как ноль.

Если вы хотите вычислить среднее значение с учётом пропущенных данных, вы можете сначала присвоить им значения с помощью метода Pandas `.fillna()`. Ознакомьтесь с моим руководством по этой ссылке, чтобы узнать больше:

Давайте вычислим среднее значение, включая и исключая пропущенное значение в столбце Melissa:

```python
>>> print(df['Melissa'].mean())
>>> print(df['Melissa'].fillna(0).mean())

1800.0
1350.0
```

### Используйте Pandas Describe для вычисления средних значений

Наконец, давайте воспользуемся методом Pandas `.describe()`, чтобы вычислить среднее значение (а также некоторые другие полезные статистики). Чтобы узнать больше о методе Pandas `.describe()`, ознакомьтесь с моим руководством по этой ссылке.

Давайте посмотрим, как мы можем получить среднее значение и другие полезные статистики:

```python
>>> 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` для доступа к данным:

```python
>>> print(df.describe().loc['mean'])

Carl       2150.0
Jane       1325.0
Melissa    1800.0
Name: mean, dtype: float64
```

### Заключение

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

Чтобы узнать больше о методе `.mean()` в Pandas, ознакомьтесь [с официальной документацией по этой ссылке.](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.mean.html)
