Pandas dropna: как использовать метод df.dropna () в Python

Pandas dropna () — это встроенная функция DataFrame, которая используется для удаления строк и столбцов со значениями Null/None/NA из DataFrame. Метод Pandas dropna () возвращает новый DataFrame, а исходный DataFrame остается неизменным. Мы можем создавать нулевые значения, используя None, pandas. Свойства NaT и numpy.nan.

Функция Pandas dropna ()

Метод Pandas dropna () позволяет пользователю анализировать и отбрасывать строки/столбцы с нулевыми значениями по-разному. Функция полезна, когда мы импортируем данные CSV в DataFrame. CSV-файл имеет нулевые значения, которые позже отображаются как NaN во фрейме данных.

Синтаксис

 DataFrame.dropna (self  , axis = 0, how = 'any', thresh = None, subset = None, inplace = False) 
  1. axis : возможные значения: {0 или ‘index’, 1 или ‘columns’}, значение по умолчанию — 0. Если 0, отбрасывать строки с нулевыми значениями. Если 1, отбросьте столбцы с пропущенными значениями.
  2. how : возможные значения: {‘any’, ‘all’}, по умолчанию ‘any’. Если «любой», отбросьте строку/столбец, если какое-либо из значений равно нулю. Если «все», отбросьте строку/столбец, если все значения отсутствуют.
  3. thresh : это значение типа int, чтобы указать порог для операции удаления. .
  4. subset : определяет строки/столбцы для поиска нулевых значений.
  5. inplace : это логическое значение. Если это True, то исходный DataFrame изменяется и возвращается None .

Пример df.dropna

Давайте создадим DataFrame, в который мы поместим значения np.nan, pd.NaT и None .

 # app.pyimport pandas as pdimport numpy as np # read the dataseries = [('Stranger Things', 3, 'Millie'), ('Game  of Thrones ', np.nan,' Emilia '), (' Westworld ', pd.NaT,' Evan Rachel '), (' La Casa De Papel ', 4, None)] # Создайте объект DataFrame .dfObj = pd.DataFrame  (series, columns = ['Name', 'Seasons', 'Actor']) print (dfObj) 

Вывод

 python3 app.py Имя Сезоны Actor0 Stranger Things 3 Millie1 Игра престолов NaN Emilia2 Westworld NaT Evan Rachel3 La Casa De Papel 4 None 

Теперь мы хотим удалить значения NaN, NaT и None. из DataFrame с помощью функции df.dropna ().

См. следующий код.

 # приложение  .pyimport pandas as pdimport numpy as np # чтение базы данных = [('Stranger Things', 3, 'Millie'), ('Game of Thrones', np.nan, 'Emilia'), ('Westworld', pd.  NaT, 'Evan Rachel'), ('La Casa De Papel', 4, None)] # Создайте объект DataFrame .dfObj = pd.DataFrame (series, columns = ['Name', 'Seasons', 'Actor']) print  ('Перед удалением всех строк NaT, None и NaN') print (dfObj) deletedNone = dfObj. dropna () print ('После удаления всех строк NaT, None и NaN') print (deletedNone) 

Вывод

  python3 app.py Перед удалением всех строк NaT, None и NaN Имя Сезоны Actor0 Stranger Things 3 Millie1 Игра престолов NaN Emilia2 Westworld NaT Evan Rachel3 La Casa De Papel 4 Нет После удаления всех строк NaT, None и NaN Имя Seasons Actor0 Stranger Things 3  Милли 

Функция dropna () Pandas возвращает DataFrame с удаленными из него записями NA.

Pandas: удалить все столбцы с любым отсутствующим значением

Мы можем передать axis = 1 , чтобы удалить все столбцы с отсутствующим значением значения.

См. следующий код.

 # app.pyimport pandas as pdimport numpy as np # read the dataseries = [('Stranger Things', 3, '  Millie '), (' Game of Thrones ', np.nan,' Emilia '), (' Westworld ', pd.NaT,' Evan Rachel '), (' La Casa De Papel ', 4, None)] # Create  объект DataFrame .dfObj = pd.DataFrame (se  ries, columns = ['Name', 'Seasons', 'Actor']) print ('Перед удалением всех столбцов NaT, None и NaN') print (dfObj) deletedNoneColumns = dfObj.dropna (axis = 1) print ('  После удаления всех столбцов NaT, None и NaN ') print (deletedNoneColumns) 

Output

 python3 app.py Перед удалением всех  Столбцы NaT, None и NaN Имя Сезоны Актер0 Очень странные дела 3 Милли1 Игра престолов NaN Эмилия2 Мир Запада NaT Эван Рэйчел3 La Casa De Papel 4 Нет После удаления всех столбцов NaT, Нет и NaN Имя0 Очень странные дела1 Игра престолов2 Мир Дикого Запада3 La Casa De Papel 

Если он найдет какой-либо столбец с минимум одним значением NaN, None или NaT, он удалит этот столбец. Мы передали axis = 1, что означает удаление любого столбца, имеющего как минимум одно из следующих значений: NaN , None , или значения NaT .

Pandas: отбросьте строки, если все элементы отсутствуют

Если мы передадим параметр how = ‘all’ , он удалит строку, если все значения либо None, NaN, либо NaT.

См. следующий код.

 # app.pyimport pandas as pdimport numpy as np # read the dataseries = [('Stranger  Вещи ', 3,' Милли '), (' Игра престолов ', np.nan,' Эмилия '), (' Westworld ', PDNaT,' Эван Рэйчел '), (' La Casa De Papel ', 4  , None)] # Создать объект DataFrame .dfObj = pd.DataFrame (series, columns = ['Name', 'Seasons', 'Actor']) print ('Before drop') print (dfObj) deletedNoneColumns = dfObj.dropna (how  = 'all') print ('Отбросьте строки, в которых отсутствуют все элементы') print (RemoveNoneColumns) 

Вывод

  пит  приложение on3. pyBefore drop name Seasons Actor0 Stranger Things 3 Millie1 Game of Thrones NaN Emilia2 Westworld NaT Evan Rachel3 La Casa De Papel 4 None Удалите строки, где отсутствуют все элементы Name Seasons Actor0 Stranger Things 3 Millie1 Game of Thrones NaN Emilia2 Westworld NaT Эван Де Рэйчел3 Ла  Papel 4 None 

Из вывода мы видим, что функция dropna () не удаляет ни одной строки, потому что ни одна строка не имеет всех значений None, NaN или NaT.

Итак, мы удалили строку/столбец, только если все значения равны Null .

Панды: отбросьте только те строки с минимум 2 значениями NA

Функция Pandas dropna (thresh = 2) удаляет только те строки, которые имеют минимум 2 значения NA.

Давайте изменим существующую строку, которая имеет как минимум 2 значения NA, и применим аргумент thresh = 2, чтобы увидеть желаемый результат.

 # app.pyimport pandas  as pdimport numpy as np # чтение данных  eries = [('Stranger Things', 3, 'Millie'), ('Game of Thrones', np.nan, 'Emilia'), ('Westworld', pd.NaT, 'Evan Rachel'), ('La  Casa De Papel ', None, None)] # Создайте объект DataFrame .dfObj = pd.DataFrame (series, columns = [' Name ',' Seasons ',' Actor ']) print (' Before droping ') print (dfObj) deletedNoneColumns  = dfObj.dropna (thresh = 2) print ('Удалять только те строки, которые имеют минимум 2 значения NA') print (deletedNoneColumns) 

Здесь последняя строка DataFrame имеет 2 значения None. Итак, после применения функции dropna (thresh = 2) она должна удалить эту строку из DataFrame. См. Следующий результат.

 python3 app.py Перед удалением Name Seasons Actor0 Stranger Things 3 Millie1 Game of Thrones NaN Emilia2 Westworld NaT Evan Rachel3 La Casa De Papel Нет Нет Удалите только те строки, которые имеют как минимум 2 значения NA  Имя Сезоны Актер0 Очень странные дела 3 Милли1 Игра престолов NaN Эмилия2 Westworld NaT Эван Рэйчел 

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

Давайте определим столбцы, в которых они ищут отсутствующие значения.

 # app.pyimport pandas as pdimport numpy as np # read the dataseries = [('Stranger Things', 3, 'Millie'  ), ('Game of Thrones', np.nan, 'Emilia'), ('Westworld', pd.NaT, 'Evan Rachel'), ('La Casa De Papel', 4, None)] # Создайте DataFrame  objectdfObj = pd.DataFrame (series, columns = ['Name', 'Seasons', 'Actor']) print ('Прежде чем бросить') print (dfObj) removeDefinedColumns = dfObj.dropna (subset = ['Name', 'Actor  ']) print (' Удалять только те строки, имена столбцов которых определены в подмножестве ') print (  removeDefinedColumns) 

Вывод

 приложение pyt python3. pyBefore drop Name Seasons Actor0 Stranger Things 3 Millie1 Game of Thrones NaN Emilia2 Westworld NaT Evan Rachel3 La Casa De Papel 4 None Удалите только те строки, названия столбцов которых определены в подмножестве Name Seasons Actor0 Stranger Things 3 Millie1 Game of Thrones NaN Emilia2 NaT Evan  Рэйчел 

Из вывода видно, что нашему условию удовлетворяет только последняя строка, поэтому она была удалена.

Pandas: Keep DataFrame с действительными записями в той же переменной.

Dropna ( inplace = True ) сохраняет DataFrame с действительными записями в той же переменной.

См. следующий код.

 # app.pyimport pandas as pdimport numpy as np # read the dataseries = [('Stranger Things', 3, 'Millie'  ), ('Game of Thrones', np.nan, 'Emilia'), ('Westworld', pd.NaT, 'Evan Rachel'), ('La Casa De Papel', 4, None)] # Создайте DataFrame  objectdfObj = pd.DataFrame (series, columns = ['Name', 'Seasons', 'Actor']) d  fObj.dropna (inplace = True) print (dfObj) 

Вывод

 python3 app.py Имя Сезоны Актер0 Очень странные дела 3  Милли 

Мы передали inplace = True, чтобы изменить сам исходный DataFrame. Это полезно, когда размер DataFrame огромен, и мы хотим сэкономить немного памяти.

Заключение

Если вы хотите отказаться от строк со значениями NaN в Pandas DataFrame или отбрасывать в зависимости от некоторых условий, а затем использовать метод dropna (). Вам просто нужно передать различные параметры в зависимости от ваших требований при удалении целых строк и столбцов.

См. Также

Pandas read_csv ()

Pandas set_index ()

Логическое индексирование Pandas

Pandas iloc []

Pandas value_counts ()

Оцените статью
nanomode.ru
Добавить комментарий