Автор оригинала: Pankaj Kumar.
1. Функция pandas dataframe dropna ()
Функция PandaS DataFrame Dropna () используется для удаления строк и столбцов с значениями NULL/NAN. По умолчанию эта функция возвращает новое dataframe и исходный файл dataframe остается без изменений.
Мы можем создавать нулевые значения, используя none, pandas.nat и numpy.nan переменные.
Синтаксис функции DropNa ():
dropna(self, axis=0, how="any", thresh=None, subset=None, inplace=False)
- Ось : Возможные значения {0 или «индекс», 1 или «столбцы»}, по умолчанию 0. Если 0, капля строки с нулевыми значениями. Если 1, падение колонн с отсутствующими значениями.
- Как : Возможные значения {‘any’, ‘all’}, по умолчанию “любой”. Если «любой», отбросьте строку/столбец, если какое-либо из значений нуль. Если «все», отбросьте строку/столбец, если все значения отсутствуют.
- Thresh : Значение INT для указания порога для операции падения.
- подмножество : Указывает строки/столбцы, чтобы искать нулевые значения.
- в помещении : логическое значение. Если true, источник dataframe изменяется, и никто не возвращается.
Давайте посмотрим на несколько примеров использования функции DropNa ().
2. Панда падайте все строки любым нулевым/NAN/NAT ценностями
Это поведение по умолчанию функция DropNa ().
import pandas as pd import numpy as np d1 = {'Name': ['Pankaj', 'Meghna', 'David', 'Lisa'], 'ID': [1, 2, 3, 4], 'Salary': [100, 200, np.nan, pd.NaT], 'Role': ['CEO', None, pd.NaT, pd.NaT]} df = pd.DataFrame(d1) print(df) # drop all rows with any NaN and NaT values df1 = df.dropna() print(df1)
Выход:
Name ID Salary Role 0 Pankaj 1 100 CEO 1 Meghna 2 200 None 2 David 3 NaN NaT 3 Lisa 4 NaT NaT Name ID Salary Role 0 Pankaj 1 100 CEO
3. Снимите все столбцы любым недостающим значением
Мы можем пройти ось = 1
Чтобы отбросить колонны с отсутствующими значениями.
df1 = df.dropna(axis=1) print(df1)
Выход:
Name ID 0 Pankaj 1 1 Meghna 2 2 David 3 3 Lisa 4
4. Перепасть строки/столбец только в том случае, если все значения нуль
import pandas as pd import numpy as np d1 = {'Name': ['Pankaj', 'Meghna', 'David', pd.NaT], 'ID': [1, 2, 3, pd.NaT], 'Salary': [100, 200, np.nan, pd.NaT], 'Role': [np.nan, np.nan, pd.NaT, pd.NaT]} df = pd.DataFrame(d1) print(df) df1 = df.dropna(how='all') print(df1) df1 = df.dropna(how='all', axis=1) print(df1)
Выход:
Name ID Salary Role 0 Pankaj 1 100 NaT 1 Meghna 2 200 NaT 2 David 3 NaN NaT 3 NaT NaT NaT NaT Name ID Salary Role 0 Pankaj 1 100 NaT 1 Meghna 2 200 NaT 2 David 3 NaN NaT Name ID Salary 0 Pankaj 1 100 1 Meghna 2 200 2 David 3 NaN 3 NaT NaT NaT
5. Строки/колонны DATAFRAME DOWS/столбцы при пересечении порога нулевых значений
import pandas as pd import numpy as np d1 = {'Name': ['Pankaj', 'Meghna', 'David', pd.NaT], 'ID': [1, 2, pd.NaT, pd.NaT], 'Salary': [100, 200, np.nan, pd.NaT], 'Role': [np.nan, np.nan, pd.NaT, pd.NaT]} df = pd.DataFrame(d1) print(df) df1 = df.dropna(thresh=2) print(df1)
Выход:
Name ID Salary Role 0 Pankaj 1 100 NaT 1 Meghna 2 200 NaT 2 David NaT NaN NaT 3 NaT NaT NaT NaT Name ID Salary Role 0 Pankaj 1 100 NaT 1 Meghna 2 200 NaT
Строки с 2 или более нулевыми значениями снижаются.
6. Определите этикетки для поиска нулевых значений
import pandas as pd import numpy as np d1 = {'Name': ['Pankaj', 'Meghna', 'David', 'Lisa'], 'ID': [1, 2, 3, pd.NaT], 'Salary': [100, 200, np.nan, pd.NaT], 'Role': ['CEO', np.nan, pd.NaT, pd.NaT]} df = pd.DataFrame(d1) print(df) df1 = df.dropna(subset=['ID']) print(df1)
Выход:
Name ID Salary Role 0 Pankaj 1 100 CEO 1 Meghna 2 200 NaN 2 David 3 NaN NaT 3 Lisa NaT NaT NaT Name ID Salary Role 0 Pankaj 1 100 CEO 1 Meghna 2 200 NaN 2 David 3 NaN NaT
Мы можем указать значения индекса в подмножестве при падении столбцов из DataFrame.
df1 = df.dropna(subset=[1, 2], axis=1) print(df1)
Выход:
Name ID 0 Pankaj 1 1 Meghna 2 2 David 3 3 Lisa NaT
Столбец «ID» не сброшен, поскольку отсутствующее значение выглядит только в индексе 1 и 2.
7. Снижение строк с на месте
Мы можем пройти Inplace = True
Чтобы изменить сам источник DataFrame. Это полезно, когда размер DataFrame огромный, и мы хотим сохранить некоторую память.
import pandas as pd d1 = {'Name': ['Pankaj', 'Meghna'], 'ID': [1, 2], 'Salary': [100, pd.NaT]} df = pd.DataFrame(d1) print(df) df.dropna(inplace=True) print(df)
Выход:
Name ID Salary 0 Pankaj 1 100.0 1 Meghna 2 NaN Name ID Salary 0 Pankaj 1 100.0
8. Ссылки
- Учебник модуля Python Pandas
- Pandas Drop Duplicate Rows
- Pandas DataFrame Dropna () API DOC