Перейти к содержимому

Как найти nan в pandas

  • автор:

Как в датафрейме найти столбец с наибольшим числом Nan значений и вывести его индекс и количество таких значений

Работаю с большим csv файлом с помощью pandas. df.isnull().sum() выводит все столбцы, а как определить тот, где больше всего пропущенных значений?

Отслеживать
задан 23 апр 2022 в 19:05
15 3 3 бронзовых знака
Оксана, вы получили что хотели?
25 апр 2022 в 17:37

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

df.isnull().sum().idxmax() 

Название столбца с максимальным количеством пропущенных значений

df.isnull().sum().max() 

Вывод значения максимума в столбце

Отслеживать
ответ дан 24 апр 2022 в 9:45
593 3 3 серебряных знака 12 12 бронзовых знаков

Есть идея в том что бы пройтись по каждому столбцу, забрать все значения Nan, и присвоить финальное значения для каждого итератора столбца, наполняя ими список, а после вывести максимальное значение списка, например как вариант:

 def nan(file_name): n_Max = #Ваше количество стобцов n = 1 i = 0 max_equal = [] with open(file_name, encoding='utf-8') as csvfile: reader = csv.DictReader(csvfile, delimiter = ',') for row in reader: if row[f'Row'] == 'Nan': #Цикл проходится по таблице и забирает нужное значение в стобце row[n], ваше имя стобца должно совпадать с именем в таблице row[f'Row'] = i + 1 else: continue max_equal.append(row[f'Row']) n = n + 1 print(max(max_equal)) nan('file_name.csv') 

Как найти строки с отсутствующими данными в Pandas Dataframe

При работе с Dataframe в Pandas можно столкнуться с ситуацией, когда данные не полные (отсутствует часть значений) и это не позволяет их анализировать. В этом уроке мы рассмотрим, как найти строки в Dataframe, у которых часть информации отсутствует.

Для начала давайте загрузим наш учебный пример:

import pandas as pd
url=’https://drive.google.com/file/d/1KXfupiJKql5Lc-D73KiiS_jEd_CNIW44/view?usp=sharing’
url2=’https://drive.google.com/uc?id=’ + url.split(‘/’)[-2]
df = pd.read_csv(url2)
df.info()

Это база данных по приложениям в Google Play и как вы видите, к примеру в столбце Rating, много пустых элементов.
Для отбора строк, где в одном указанном столбце, отсутствуют данные, мы можем воспользоваться стандартным инструментом фильтрации. К примеру, отберем те строки, по которым в столбце Current Ver нет информации:

df[df[‘Current Ver’].isnull()]

Однако, что делать, если нам нужно отобрать все строки, в которых хотя бы в одном из столбцов отсутствуют значения?
Для начала создадим новый Dataframe, в который поместим проверку на то, является ли информация в ячейке пустой или нет:

is_null = df.isnull()

Для каждой позиции мы получим результат False или True, где False – в ячейке есть данные, True – в ячейке NaN.
Как мы видели выше, в 15 строке у нас отсутствует информация о Current Ver, давайте проверим при помощи функции iloc, какие данные по 15 строке у нас в Dataframe is_null:

is_null.iloc[15,]

Все верно, по всем столбцам, кроме Current Ver, у нас False, а по столбцу Current Ver у нас True, так как в нем нет какой-либо информации.
Далее нам надо сформировать Series, которая нам послужит в дальнейшем фильтром, в которой значение True будет в случае, если хотя бы в одном столбце в строке нет данных, а False, если информация есть во всех столбцах:

row_with_null = is_null.any(axis=1)

Используя эту Series как фильтр, мы создаем новый Dataframe, в который переносим только те строки, в которых хотя бы в одном из столбцов есть NaN:

rows_with_null = df[row_with_null]

Готово, мы нашли все строки с отсутствующими данными в Dataframe. В качестве бонуса прикладываю ноутбук с текущего урока. Спасибо за внимание, комментарии приветствуются.

Как подсчитать пропущенные значения в Pandas DataFrame

Часто вас может заинтересовать подсчет количества пропущенных значений в кадре данных pandas.

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

import pandas as pd import numpy as np #create DataFrame with some missing values df = pd.DataFrame() #view DataFrame print(df) a b c 0 4.0 NaN 11.0 1 NaN 6.0 8.0 2 NaN 8.0 10.0 3 7.0 14.0 6.0 4 8.0 29.0 6.0 5 12.0 NaN NaN 

Подсчитайте общее количество пропущенных значений во всем DataFrame

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

df.isnull().sum().sum () 5 

Это говорит нам о том, что всего пропущено 5 значений.

Подсчитайте общее количество пропущенных значений в столбце

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

df.isnull().sum () a 2 b 2 c 1 

Это говорит нам:

  • Столбец «а» имеет 2 пропущенных значения.
  • Столбец «b» имеет 2 пропущенных значения.
  • Столбец «c» имеет 1 пропущенное значение.

Вы также можете отобразить количество пропущенных значений в процентах от всего столбца:

df.isnull().sum ()/ len(df)\* 100 a 33.333333 b 33.333333 c 16.666667 

Это говорит нам:

  • 33,33% значений в столбце «а» отсутствуют.
  • 33,33% значений в столбце «b» отсутствуют.
  • 16,67% значений в столбце «c» отсутствуют.

Подсчитайте общее количество пропущенных значений в строке

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

df.isnull().sum (axis= 1 ) 0 1 1 1 2 1 3 0 4 0 5 2 

Это говорит нам:

  • В строке 1 отсутствует 1 значение.
  • В строке 2 отсутствует 1 значение.
  • В строке 3 отсутствует 1 значение.
  • В строке 4 пропущено 0 значений.
  • Строка 5 имеет 0 пропущенных значений.
  • В строке 6 есть 2 пропущенных значения.

Проверка на наличие NaN в DataFrame в Pandas

Detecting missing values in data with Python and Pandas.

Часто при работе с большими наборами данных, особенно теми, которые были получены из внешних источников, могут возникать проблемы с пропущенными или недоступными данными. В Python и библиотеке Pandas такие данные обычно представлены значением NaN (Not a Number).

Рассмотрим пример DataFrame:

import pandas as pd import numpy as np data = < 'A': [1, 2, np.nan], 'B': [5, np.nan, np.nan], 'C': [1, 2, 3] >df = pd.DataFrame(data)

В этом DataFrame в столбцах ‘A’ и ‘B’ есть значения NaN.

Варианты проверки наличия NaN

Вариант 1: isnull() и any()

Один из способов проверить наличие NaN в DataFrame — использовать функцию isnull() . Она возвращает другой DataFrame, где каждое значение это булево значение, указывающее, является ли соответствующее значение в исходном DataFrame NaN.

df.isnull()

Чтобы узнать, есть ли хотя бы одно значение NaN в DataFrame, можно использовать функцию any() , которая возвращает True, если хотя бы одно значение в DataFrame является True.

df.isnull().any().any()

Вариант 2: isna() и values

Альтернативный способ — использовать функцию isna() , которая аналогична isnull() . Однако, вместо второго any() можно использовать свойство values и функцию any() из numpy.

np.any(df.isna().values)

Оба этих способа позволяют эффективно проверить наличие значений NaN в DataFrame. Выбор между ними зависит от конкретной ситуации и личных предпочтений.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *