Введение
В этом руководстве вы узнаете, как использовать функцию DataFrame dropna()
библиотеки pandas.
NA
значения обозначают “Недоступно”. Это может относиться к Null
, None
, pandas.NaT
или numpy.nan
. Использование dropna()
позволяет удалять строки и столбцы с этими значениями. Это может быть полезно, чтобы оставить только действительные данные.
По умолчанию эта функция возвращает новый DataFrame, и исходный DataFrame остается неизменным.
Этот учебник проверен с использованием Python 3.10.9, pandas 1.5.2 и NumPy 1.24.1.
Синтаксис
dropna()
принимает следующие параметры:
axis
:{0 (или 'index'), 1 (или 'columns')}, по умолчанию 0
- Если
0
, удаляются строки с отсутствующими значениями. - Если
1
, удаляются столбцы с отсутствующими значениями. how
:{'any', 'all'}, по умолчанию 'any'
- Если
'any'
, удаляется строка или столбец, если хотя бы одно из значений равноNA
. - Если
'all'
, удаляется строка или столбец, если все значения равныNA
. thresh
: (опционально) значениеint
, указывающее порог для операции удаления.subset
: (опционально) метка столбца или последовательность меток для указания строк или столбцов.inplace
: (опционально) значениеbool
.- Если
True
, исходный DataFrame изменяется, и возвращаетсяNone
.
Создание образцовых DataFrame
Создайте образцовый DataFrame, содержащий допустимые и недопустимые значения:
Этот код выведет DataFrame:
OutputName ID Population Regions
0 Shark 1 100 1
1 Whale 2 200 None
2 Jellyfish 3 NaN NaT
3 Starfish 4 NaT NaT
Затем добавьте второй DataFrame с дополнительными строками и столбцами со значениями NA
:
Это выведет новый DataFrame:
OutputName ID Population Regions Endangered
0 Shark 1 100 1 NaT
1 Whale 2 200 None NaT
2 Jellyfish 3 NaN NaT NaT
3 Starfish 4 NaT NaT NaT
4 NaT NaT NaT NaT NaT
Вы будете использовать предыдущие DataFrame в приведенных ниже примерах.
Удаление всех строк с отсутствующими значениями
Используйте dropna()
для удаления строк с любыми значениями None
, NaN
или NaT
:
Это выведет:
OutputName ID Population Regions
0 Shark 1 100 1
A new DataFrame with a single row that didn’t contain any NA
values.
Удаление всех столбцов с отсутствующими значениями
Используйте dropna()
с axis=1
для удаления столбцов с любыми значениями None
, NaN
или NaT
:
Будут удалены столбцы с любыми значениями None
, NaN
или NaT
:
OutputName ID
0 Shark 1
1 Whale 2
2 Jellyfish 3
3 Starfish 4
A new DataFrame with a single column that contained non-NA
values.
Удаление строк или столбцов, если все
значения Null
с помощью how
Используйте второй DataFrame и how
:
Будут удалены строки со значениями, все равными NA
:
OutputName ID Population Regions Endangered
0 Shark 1 100 1 NaT
1 Whale 2 200 None NaT
2 Jellyfish 3 NaN NaT NaT
3 Starfish 4 NaT NaT NaT
Была удалена пятая строка.
Затем используйте how
и укажите axis
:
Будут удалены столбцы со значениями, все равными NA
:
OutputName ID Population Regions
0 Shark 1 100 1
1 Whale 2 200 None
2 Jellyfish 3 NaN NaT
3 Starfish 4 NaT NaT
4 NaT NaT NaT NaT
Был удален пятый столбец.
Удаление строк или столбцов, если превышен порог с помощью thresh
Используйте второй DataFrame с thresh
, чтобы удалить строки, которые не соответствуют порогу, содержащему по крайней мере 3
не NA
значения:
Строки, в которых есть менее 3
не NA
значений, будут удалены:
OutputName ID Population Regions Endangered
0 Shark 1 100 1 NaT
1 Whale 2 200 None NaT
Третья, четвертая и пятая строки были удалены.
Удаление строк или столбцов для конкретных subsets
Используйте второй DataFrame с помощью subset
для удаления строк с NA
значениями в столбце Population
:
Строки, содержащие значения NA
в столбце Population
, будут удалены:
OutputName ID Population Regions Endangered
0 Shark 1 100 1 NaT
1 Whale 2 200 None NaT
Третья, четвертая и пятая строки были удалены.
Вы также можете указать значения index
в subset
, когда удаляете столбцы из DataFrame:
Столбцы, содержащие значения NA
в подмножестве строк 1
и 2
:
OutputName ID
0 Shark 1
1 Whale 2
2 Jellyfish 3
3 Starfish 4
4 NaT NaT
Третий, четвертый и пятый столбцы были удалены.
Изменение исходного DataFrame после удаления строк или столбцов с помощью inplace
По умолчанию dropna()
не изменяет исходный DataFrame. Однако в некоторых случаях вы можете захотеть экономить память при работе с большим исходным DataFrame, используя inplace
.
Этот код не использует переменную dfresult
.
Это приведет к выводу:
OutputName ID Population Regions
0 Shark 1 100 1
Исходный DataFrame был изменен.
Вывод
В этой статье вы использовали функцию dropna()
для удаления строк и столбцов со значениями NA
.
Продолжайте обучение с помощью дополнительных учебных пособий по Python и pandas – Руководство по модулю Python pandas, Удаление дублирующихся строк в pandas.
Ссылки
Source:
https://www.digitalocean.com/community/tutorials/pandas-dropna-drop-null-na-values-from-dataframe