> For the complete documentation index, see [llms.txt](https://bemind.gitbook.io/neural/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://bemind.gitbook.io/neural/uchebniki-po-pandas-i-numpy/pandas/pandas-zamena-nan-na-nuli.md).

# Pandas: Замена NaN на нули

Работа с отсутствующими данными - это важный навык для любого аналитика данных или специалиста по данным! Во многих случаях вы захотите заменить отсутствующие данные или значения NaN на нули. В этом учебном пособии **вы узнаете, как использовать Pandas для замены значений NaN на нули**. Это обычный навык, который является частью лучшего процесса очистки и трансформации ваших данных

К концу этого урока вы научитесь:

* Как использовать Pandas для замены значений NaN нулями для одного столбца, нескольких столбцов и всего DataFrame
* Как использовать NumPy для замены значений NaN в кадре данных Pandas
* Как заменить значения NaN в кадре данных Pandas на месте

Оглавление

* [Загрузка образца DataFrame Pandas](#zagruzka-obrazca-dataframe-pandas)
* [Как заменить значения NaN нулями для одного столбца Pandas](#kak-zamenit-znacheniya-nan-nulyami-dlya-odnogo-stolbca-pandas)
* [Как заменить значения NaN нулями для нескольких столбцов Pandas](#kak-zamenit-znacheniya-nan-nulyami-dlya-neskolkikh-stolbcov-pandas)
* [Как заменить значения NaN нулями для таблицы данных Pandas](#kak-zamenit-znacheniya-nan-nulyami-dlya-tablicy-dannykh-pandas)
* [Как заменить значения NaN нулями для таблицы данных Pandas на месте](#kak-zamenit-znacheniya-nan-nulyami-dlya-tablicy-dannykh-pandas-na-meste)
* [Как заменить значения NaN нулями в Pandas, используя NumPy для столбца](#kak-zamenit-znacheniya-nan-nulyami-v-pandas-ispolzuya-numpy-dlya-stolbca)
* [Как заменить значения NaN нулями в Pandas, используя NumPy для DataFrame](#kak-zamenit-znacheniya-nan-nulyami-v-pandas-ispolzuya-numpy-dlya-dataframe)
* [Заключение](#zaklyuchenie)
* [Дополнительные ресурсы](#dopolnitelnye-resursy)

### Загрузка образца DataFrame Pandas

Чтобы следовать за учебником, я предоставил образец DataFrame Pandas. Чтобы загрузить DataFrame, мы импортируем Pandas с псевдонимом `pd` и передадим словарь в конструктор `DataFrame()`. Поскольку мы также захотим включить некоторые значения `NaN`, мы импортируем NumPy.

```python
# Loading a Sample Pandas DataFrame
import pandas as pd
import numpy as np

df = pd.DataFrame({
    'Col_A': [1, 2, 3, np.NaN],
    'Col_B': [1, np.NaN, 3, 4],
    'Col_C': [1, 2, np.NaN, 4],
})

print(df)

# Returns:
#    Col_A  Col_B  Col_C
# 0    1.0    1.0    1.0
# 1    2.0    NaN    2.0
# 2    3.0    3.0    NaN
# 3    NaN    4.0    4.0
```

В нашем распоряжении три колонки, каждая из которых содержит пропущенные данные.

### Как заменить значения NaN нулями для одного столбца Pandas

Чтобы заменить все отсутствующие значения нулями в одном столбце DataFrame Pandas, мы можем применить метод `.fillna()` к столбцу. Функция позволяет вам передать значение, которым нужно заменить отсутствующие данные. В данном случае мы передаем значение 0.

```python
# Replace NaN Values with Zeroes for a Single Pandas Column
import pandas as pd
import numpy as np

df = pd.DataFrame({'Col_A': [1, 2, 3, np.NaN], 'Col_B': [1, np.NaN, 3, 4], 'Col_C': [1, 2, np.NaN, 4]})

df['Col_A'] = df['Col_A'].fillna(0)

print(df)

# Returns:
#    Col_A  Col_B  Col_C
# 0    1.0    1.0    1.0
# 1    2.0    NaN    2.0
# 2    3.0    3.0    NaN
# 3    0.0    4.0    4.0
```

В предыдущем коде мы переназначили столбец `'Col_A'` самому себе. Переназначая его, мы применили метод `.fillna()`, передав 0 в аргумент. В следующем разделе вы узнаете, как заменить все пропущенные значения для нескольких столбцов.

### Как заменить значения NaN нулями для нескольких столбцов Pandas

Для замены значений NaN на нули в нескольких столбцах DataFrame Pandas можно применить метод fillna к нескольким столбцам. Чтобы модифицировать несколько столбцов, мы можем передать список меток столбцов в селектор. Давайте посмотрим, как это выглядит:

```python
# Replace NaN Values with Zeroes for Two Pandas Columns
import pandas as pd
import numpy as np

df = pd.DataFrame({'Col_A': [1, 2, 3, np.NaN], 'Col_B': [1, np.NaN, 3, 4], 'Col_C': [1, 2, np.NaN, 4]})

df[['Col_A', 'Col_B']] = df[['Col_A', 'Col_B']].fillna(0)

print(df)

# Returns:
#    Col_A  Col_B  Col_C
# 0    1.0    1.0    1.0
# 1    2.0    0.0    2.0
# 2    3.0    3.0    NaN
# 3    0.0    4.0    4.0
```

В приведенном выше коде мы выбираем несколько столбцов, передавая список меток столбцов в селектор `df[]`. Затем мы можем применить метод `fillna`, передавая в него 0. Это заменяет все отсутствующие значения на 0 для нескольких столбцов.

### Как заменить значения NaN нулями для таблицы данных Pandas

Метод fillna библиотеки Pandas можно применять ко всему DataFrame. В этом случае любые отсутствующие значения NaN в столбцах будут заменены на значение, которое передается в метод. Этот подход может быть полезен при работе с DataFrame, когда необходимо обеспечить единообразие заполнения отсутствующих значений.

```python
# Replace NaN Values with Zeroes for an Entire DataFrame
import pandas as pd
import numpy as np

df = pd.DataFrame({'Col_A': [1, 2, 3, np.NaN], 'Col_B': [1, np.NaN, 3, 4], 'Col_C': [1, 2, np.NaN, 4]})

df = df.fillna(0)

print(df)

# Returns:
#    Col_A  Col_B  Col_C
# 0    1.0    1.0    1.0
# 1    2.0    0.0    2.0
# 2    3.0    3.0    0.0
# 3    0.0    4.0    4.0
```

В приведенном выше блоке кода мы переназначаем DataFrame самому себе, применяя метод fillna. Мы передаем значение 0, чтобы заменить все отсутствующие значения нулями.

### Как заменить значения NaN нулями для таблицы данных Pandas на месте

Точно так же мы можем заменить все значения NaN в DataFrame Pandas на месте. Это позволяет нам не переназначать DataFrame самому себе. Это также делает код более эффективным, поскольку Pandas не будет создавать новый объект.

```python
# Replace NaN Values with Zeroes for a DataFrame In Place
import pandas as pd
import numpy as np

df = pd.DataFrame({'Col_A': [1, 2, 3, np.NaN], 'Col_B': [1, np.NaN, 3, 4], 'Col_C': [1, 2, np.NaN, 4]})

df.fillna(0, inplace=True)

print(df)

# Returns:
#    Col_A  Col_B  Col_C
# 0    1.0    1.0    1.0
# 1    2.0    0.0    2.0
# 2    3.0    3.0    0.0
# 3    0.0    4.0    4.0
```

В приведенном выше коде мы просто передаем `inplace=True` в качестве второго аргумента. Это модифицирует DataFrame непосредственно, заменяя все отсутствующие значения.

### Как заменить значения NaN нулями в Pandas, используя NumPy для столбца

Благодаря тесной интеграции Pandas с NumPy, мы также можем использовать методы NumPy в DataFrame Pandas. Метод `.replace()` можно применять непосредственно к серии Pandas (или, точнее, к столбцу). Метод `.replace()` принимает два параметра:

1. Значение для замены
2. Значение, на которое нужно заменить

Давайте посмотрим, как это выглядит:

```python
# Replace NaN Values with Zeroes for a Single Pandas Column with NumPy
import pandas as pd
import numpy as np

df = pd.DataFrame({'Col_A': [1, 2, 3, np.NaN], 'Col_B': [1, np.NaN, 3, 4], 'Col_C': [1, 2, np.NaN, 4]})

df['Col_A'] = df['Col_A'].replace(np.NaN, 0)
print(df)

# Returns:
#    Col_A  Col_B  Col_C
# 0    1.0    1.0    1.0
# 1    2.0    NaN    2.0
# 2    3.0    3.0    NaN
# 3    0.0    4.0    4.0
```

В приведенном выше коде мы используем метод `np.replace()` для замены всех отсутствующих значений NaN на значение 0.

### Как заменить значения NaN нулями в Pandas, используя NumPy для DataFrame

Аналогично, мы можем использовать метод `.replace()` из библиотеки NumPy, чтобы заменить значения NaN на нули во всем DataFrame Pandas. Для этого мы можем применить метод `.replace()` ко всему DataFrame, как показано ниже:

```python
# Replace NaN Values with Zeroes for a DataFrame with NumPy
import pandas as pd
import numpy as np

df = pd.DataFrame({'Col_A': [1, 2, 3, np.NaN], 'Col_B': [1, np.NaN, 3, 4], 'Col_C': [1, 2, np.NaN, 4]})

df = df.replace(np.NaN, 0)

print(df)

# Returns:
#    Col_A  Col_B  Col_C
# 0    1.0    1.0    1.0
# 1    2.0    0.0    2.0
# 2    3.0    3.0    0.0
# 3    0.0    4.0    4.0
```

В приведенном выше коде мы используем метод `.replace()` ко всему DataFrame для замены отсутствующих значений.

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

В этом уроке вы узнали, как использовать Pandas для замены значений NaN на нули. Вы научились делать это для одного столбца, нескольких столбцов и всего DataFrame с помощью метода Pandas fillna. Затем вы узнали, как использовать метод `.replace()` NumPy для того же для одного столбца и всего DataFrame.

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

Чтобы узнать больше о связанных темах, ознакомьтесь с обучающими материалами ниже:

* Pandas dropna(): удалить недостающие записи и столбцы в таблицах данных
* Введение в Pandas для науки о данных
* [Pandas fillna: официальная документация](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.fillna.html)
