Как идентифицировать пустые ячейки в файле CVS с помощью панд - PullRequest
0 голосов
/ 01 октября 2018

Я беру столбец из CSV-файла и вводю данные из него в массив с помощью панд.Однако многие ячейки пусты и сохраняются в массиве как 'nan'.Я хочу либо идентифицировать пустые ячейки, чтобы пропустить их, либо удалить их из массива после.Что-то вроде следующего псевдокода:

if df.row(column number) == nan
    skip

или

if df.row(column number) != nan
    do stuff

В основном, как мне определить, если ячейка из файла CSV пуста.

Ответы [ 3 ]

0 голосов
/ 01 октября 2018

pd.isnull() и pd.notnull() - это стандартные способы проверки отдельных нулевых значений, если вы выполняете итерацию по DataFrame строка за строкой и индексируете по столбцу, как вы предлагали в коде выше.Затем вы можете использовать это выражение, чтобы делать с этим значением все, что вам нравится.

Пример:

import pandas as pd

import numpy as np

a = np.nan

pd.isnull(a)
Out[4]: True

pd.notnull(a)
Out[5]: False

Если вы хотите манипулировать всеми (или определенными) значениями NaN из DataFrame, обрабатывая отсутствующиеДанные - большая тема при работе с табличными данными, и для этого есть много способов.Я бы порекомендовал главу 7 из этой книги .Вот его содержание:

enter image description here

Первый раздел будет наиболее уместным для вашего вопроса.

0 голосов
/ 01 октября 2018

Если вы просто хотите исключить пропущенные значения, вы можете использовать pd.DataFrame.dropna()

Ниже приведен пример, основанный на описанном @sacul:

>>> import pandas as pd

>>> df

     0    1    2    3    4
0  0.0  1.0  NaN  1.0  1.0
1  1.0  NaN  1.0  1.0  1.0
2  NaN  NaN  NaN  NaN  NaN
3  NaN  1.0  1.0  NaN  NaN
4  1.0  NaN  NaN  1.0  1.0

>>> df.dropna(axis=0, subset=['3'])

     0    1    2    3    4
0  0.0  1.0  NaN  1.0  1.0
1  1.0  NaN  1.0  1.0  1.0
4  1.0  NaN  NaN  1.0  1.0
  • axis=0 указывает, что строки, содержащие NaN, исключены.
  • subset=['3'] указывают, что учитываются только столбцы "3".

См. Ссылку выше дляподробности.

0 голосов
/ 01 октября 2018

Лучше всего избавиться от строк NaN после загрузки, индексируя:

df = df[df['column_to_check'].notnull()]

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

>>> df
     0    1    2    3    4
0  1.0  1.0  NaN  1.0  1.0
1  1.0  NaN  1.0  1.0  1.0
2  NaN  NaN  NaN  NaN  NaN
3  NaN  1.0  1.0  NaN  NaN
4  1.0  NaN  NaN  1.0  1.0

>>> df[df[3].notnull()]
     0    1    2    3    4
0  1.0  1.0  NaN  1.0  1.0
1  1.0  NaN  1.0  1.0  1.0
4  1.0  NaN  NaN  1.0  1.0
...