В Python DataFrame как узнать количество строк, которые имеют допустимые значения столбцов

1

Я хочу найти количество строк, которые имеют определенные значения, такие как None или "" или NaN (в основном пустые значения) во всех столбцах объекта DataFrame. Как я могу это сделать?

  • 0
    df.isnull().any();df.eq('').any() `
  • 0
    Если вам нужно только узнать, сколько нулей, df.info () даст вам ненулевые значения
Теги:
pandas
dataframe
sklearn-pandas

3 ответа

1
Лучший ответ

В pandas.Series (подумайте об этом как о столбце обычного pandas.DataFrame):

>> s = pd.Series([np.nan, np.nan, 1, 2, np.nan])

>> s

0    NaN
1    NaN
2    1.0
3    2.0
4    NaN

>>  s.isnull().sum()

  3

Для pandas.DataFrame довольно похоже:

>>  pd.DataFrame(np.array([[np.nan, np.nan],
 ...:        [ 0., np.nan],
 ...:        [ 1.,  1.],
 ...:        [ 2.,  2.],
 ...:        [np.nan, np.nan]]))

>> df

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

>> df.isnull().sum(axis=0)

0    2
1    3
dtype: int64

Чтобы суммировать по строке, просто поместите .sum(axis=1).

  • 0
    Что мне делать, если я хочу сделать isnull() eq(empty_value) и получить результаты для обоих вместе?
  • 1
    Для более быстрого метода, и если вы хотите сосчитать их все вместе, я бы порекомендовал вам преобразовать все пустые значения в NaN, чтобы вы могли их суммировать. Вы можете сделать это: s.replace("", np.nan) или df.replace("", np.nan) . А затем примените метод выше.
2

Используйте pandas dataframe.isin для создания логического массива. По строкам, затем найдите количество строк с результатом> 0.

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

search_values = ['', np.nan, None]
(df.isin(search_values).sum(axis=1) > 0).sum()

Если вы хотите количество строк в столбце:

df.isin(search_values).sum(axis=0)
  • 0
    У меня есть поле в базе данных, которое появляется только в некоторых записях и его нет в других записях. Тем не менее, я не получаю счет количества записей, в которых его нет. Как я могу получить его?
1

Используйте df.isnull().sum() чтобы получить количество строк с None и NaN.

Используйте df.eq(value).sum() для любых значений, включая пустую строку "".

Ещё вопросы

Сообщество Overcoder
Наверх
Меню