Pandas: как заполнить значения NaN средним (3 примера)


Вы можете использовать функцию fillna() для замены значений NaN в кадре данных pandas.

Вот три распространенных способа использования этой функции:

Метод 1: заполнить значения NaN в одном столбце средним значением

df['col1'] = df['col1']. fillna(df['col1'].mean())

Метод 2: заполнить значения NaN в нескольких столбцах средним значением

df[['col1', 'col2']] = df[['col1', 'col2']]. fillna(df[['col1', 'col2']].mean())

Метод 3: заполнить значения NaN во всех столбцах средним значением

df = df.fillna(df.mean ())

В следующих примерах показано, как использовать каждый метод на практике со следующими пандами DataFrame:

import numpy as np
import pandas as pd

#create DataFrame with some NaN values
df = pd.DataFrame({'rating': [np.nan, 85, np.nan, 88, 94, 90, 76, 75, 87, 86],
 'points': [25, np.nan, 14, 16, 27, 20, 12, 15, 14, 19],
 'assists': [5, 7, 7, np.nan, 5, 7, 6, 9, 9, 5],
 'rebounds': [11, 8, 10, 6, 6, 9, 6, 10, 10, 7]})

#view DataFrame
df

 rating points assists rebounds
0 NaN 25.0 5.0 11
1 85.0 NaN 7.0 8
2 NaN 14.0 7.0 10
3 88.0 16.0 NaN 6
4 94.0 27.0 5.0 6
5 90.0 20.0 7.0 9
6 76.0 12.0 6.0 6
7 75.0 15.0 9.0 10
8 87.0 14.0 9.0 10
9 86.0 19.0 5.0 7

Пример 1. Заполнение значений NaN в одном столбце средним значением

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

#fill NaNs with column mean in 'rating' column
df['rating'] = df['rating']. fillna(df['rating'].mean())

#view updated DataFrame 
df

 rating points assists rebounds
0 85.125 25.0 5.0 11
1 85.000 NaN 7.0 8
2 85.125 14.0 7.0 10
3 88.000 16.0 NaN 6
4 94.000 27.0 5.0 6
5 90.000 20.0 7.0 9
6 76.000 12.0 6.0 6
7 75.000 15.0 9.0 10
8 87.000 14.0 9.0 10
9 86.000 19.0 5.0 7

Среднее значение в столбце рейтинга было 85,125 , поэтому каждое из значений NaN в столбце рейтинга было заполнено этим значением.

Пример 2. Заполнение значений NaN в нескольких столбцах средним значением

В следующем коде показано, как заполнить значения NaN в столбцах рейтинга и очков соответствующими значениями столбцов:

#fill NaNs with column means in 'rating' and 'points' columns
df[['rating', 'points']] = df[['rating', 'points']]. fillna(df[['rating', 'points']].mean())

#view updated DataFrame
df

 rating points assists rebounds
0 85.125 25.0 5.0 11
1 85.000 18.0 7.0 8
2 85.125 14.0 7.0 10
3 88.000 16.0 NaN 6
4 94.000 27.0 5.0 6
5 90.000 20.0 7.0 9
6 76.000 12.0 6.0 6
7 75.000 15.0 9.0 10
8 87.000 14.0 9.0 10
9 86.000 19.0 5.0 7

Значения NaN как в столбцах рейтингов , так и в столбцах очков были заполнены соответствующими средними значениями столбцов.

Пример 3. Заполнение значений NaN во всех столбцах средним значением

В следующем коде показано, как заполнить значения NaN в каждом столбце значениями столбца:

#fill NaNs with column means in each column 
df = df.fillna(df.mean ())

#view updated DataFrame
df

 rating points assists rebounds
0 85.125 25.0 5.000000 11
1 85.000 18.0 7.000000 8
2 85.125 14.0 7.000000 10
3 88.000 16.0 6.666667 6
4 94.000 27.0 5.000000 6
5 90.000 20.0 7.000000 9
6 76.000 12.0 6.000000 6
7 75.000 15.0 9.000000 10
8 87.000 14.0 9.000000 10
9 86.000 19.0 5.000000 7

Обратите внимание, что значения NaN в каждом столбце были заполнены средним значением столбца.

Полную онлайн-документацию по функции fillna() можно найти здесь .

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные операции в pandas:

Как подсчитать пропущенные значения в Pandas
Как удалить строки со значениями NaN в Pandas
Как удалить строки, содержащие определенное значение в Pandas

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.