🔍 Как удалить строчки с nan в Pandas: простой способ решения

Чтобы удалить строки с значениями NaN в библиотеке pandas, вы можете использовать метод dropna(). Этот метод удаляет все строки, содержащие NaN значения.

Пример использования:

import pandas as pd

# Создание DataFrame с NaN значениями
data = {'A': [1, 2, np.nan, 4], 'B': [np.nan, 6, 7, 8]}
df = pd.DataFrame(data)

# Удаление строк с NaN значениями
df = df.dropna()

print(df)

Этот код создает DataFrame с NaN значениями, а затем удаляет строки, содержащие NaN значения. Результат будет DataFrame без строк, содержащих NaN.

Детальный ответ

Как удалить строчки с nan в библиотеке Pandas

В библиотеке Pandas, nan (Not a Number) представляет собой специальное значение, которое указывает на отсутствие данных или некорректные значения. Если в вашем наборе данных есть строки с nan, вам может понадобиться удалить эти строки для дальнейшего анализа или обработки данных.

Вот несколько примеров, как удалить строки с nan, используя Pandas:

Метод dropna()

Метод dropna() очищает фрейм данных от всех строк, содержащих nan значения. Вот как его можно использовать:


import pandas as pd

# Создание фрейма данных с nan
data = {'A': [1, 2, pd.NA, 4],
        'B': [5, pd.NA, 7, 8]}
df = pd.DataFrame(data)

# Удаление строк с nan
df_cleaned = df.dropna()
print(df_cleaned)
  

Результат:


   A  B
0  1  5
3  4  8
  

В примере выше мы создали фрейм данных с nan значениями в столбцах 'A' и 'B'. Затем мы применили метод dropna(), чтобы удалить строки с nan значениями, и распечатали очищенный фрейм данных. В результате мы получили фрейм данных без строк содержащих nan.

Метод drop()

Если вы хотите удалить только те строки, в которых все значения являются nan, можно воспользоваться методом drop(). Вот пример:


import pandas as pd

# Создание фрейма данных с nan
data = {'A': [1, pd.NA, pd.NA, 4],
        'B': [pd.NA, pd.NA, pd.NA, pd.NA]}
df = pd.DataFrame(data)

# Удаление строк с nan
df_cleaned = df.dropna(how='all')
print(df_cleaned)
  

Результат:


   A
0  1
3  4
  

В приведенном выше примере мы создали фрейм данных, где все значения в столбце 'B' и некоторые значения в столбце 'A' являются nan. Метод dropna(how='all') удаляет только те строки, в которых все значения являются nan. Таким образом, в нашем очищенном фрейме данных остаются только строки с не-nan значениями.

Метода boolean indexing

Вы также можете использовать boolean indexing для удаления строк с nan значениями. Вот пример:


import pandas as pd
import numpy as np

# Создание фрейма данных с nan
data = {'A': [1, 2, np.nan, 4],
        'B': [5, np.nan, 7, 8]}
df = pd.DataFrame(data)

# Удаление строк с nan
df_cleaned = df[~df.isna().any(axis=1)]
print(df_cleaned)
  

Результат:


   A  B
0  1  5
3  4  8
  

Здесь мы использовали метод isna() для проверки, какие значения в фрейме данных являются nan. Затем метод any(axis=1) вычисляет, есть ли хотя бы одно nan значение в каждой строке. Полученный булевый индекс используется для фильтрации фрейма данных и удаления строк с nan значениями.

Метод dropna() с параметром subset

Если вы хотите удалить строки с nan значениями только в определенных столбцах, вы можете указать параметр subset при использовании метода dropna(). Вот пример:


import pandas as pd

# Создание фрейма данных с nan
data = {'A': [1, 2, pd.NA, 4],
        'B': [5, pd.NA, 7, 8],
        'C': [9, 10, 11, pd.NA]}
df = pd.DataFrame(data)

# Удаление строк с nan только в столбцах 'A' и 'B'
df_cleaned = df.dropna(subset=['A', 'B'])
print(df_cleaned)
  

Результат:


   A  B    C
0  1  5  9.0
3  4  8  NaN
  

В приведенном выше примере мы использовали параметр subset=['A', 'B'], чтобы указать, что мы хотим удалить строки с nan значениями только в столбцах 'A' и 'B'. Таким образом, строки с nan значениями в столбце 'C' не были удалены. Результатом является фрейм данных, в котором остались только строки без nan в указанных столбцах.

Использование метода loc

Метод loc также можно использовать для удаления строк с nan значениями. Вот пример:


import pandas as pd

# Создание фрейма данных с nan
data = {'A': [1, 2, pd.NA, 4],
        'B': [5, pd.NA, 7, 8]}
df = pd.DataFrame(data)

# Удаление строк с nan
df_cleaned = df.loc[~df.isna().any(axis=1)]
print(df_cleaned)
  

Результат:


   A  B
0  1  5
3  4  8
  

В этом примере мы использовали метод loc для фильтрации фрейма данных с помощью булевого индекса, полученного из isna() и any(axis=1). Только те строки, где нет ни одного нан значения, останутся в очищенном фрейме данных.

Надеюсь, эта статья помогла вам разобраться, как удалить строки с nan значениями в библиотеке Pandas. Успехов в вашей работе с данными!

Видео по теме

Датафреймы pandas. Удаление строк

ПРАКТИКА Pandas | NaN, Null | Работа с пропусками в Pandas | МАШИННОЕ ОБУЧЕНИЕ

Pandas Базовый №4. Операции со столбцами DataFrame

Похожие статьи:

🔍 Как удалить строчки с nan в Pandas: простой способ решения