在 pandas 中,DataFrame.dropna() 函數主要用於剔除數據集中含有缺失值的行或列,返回經過清洗處理後的新數據集。下面我們將從多個方面對此函數進行詳細的闡述,包括函數的基本作用、不同參數的使用方法等。
一、df.dropna() 的作用
df.dropna() 函數用於剔除 DataFrame 中包含空值數據的行或列,以返回一份新的數據集。該函數具有以下特點:
- 默認情況下,該函數會排除任何包含 NaN(即空值)的行。
- 此函數不會修改原始數據源,而是返回一份新的數據副本。
- 當所有的 NaN 值都被刪除後,新的數據集的行和列的索引會自動進行重整。
在實踐中, 諸如廣告、網路搜索等領域中的大量數據是存在缺失值(NaN)的。通過使用該函數,可以清楚目標數據集中有多少數據缺失,並且可以將缺失部分刪除或進行其他處理。
二、df.dropna(inplace=True)
如果需要修改原始數據源而非返回數據副本,則可以通過指定 inplace=True 參數來實現。此時,原始數據集將被修改,得到的結果就沒有返回值或返回 None。例如:
import pandas as pd df = pd.DataFrame({'name': ['Tom', 'Jerry', 'Spike', 'Tyke'], 'age': [4, 3, 4, 1], 'gender': ['male', 'male', 'male', 'male'], 'fruit': ['apple', 'nan', 'orange', 'nan']}) # 在原始數據源中刪除所有包含 NaN 值的行 df.dropna(inplace=True)
三、df.dropna(thresh)
df.dropna(thresh) 中,thresh 表示行或列中至少需要非 NaN 值的數量。這個參數可以控制程序刪除含空值的行或列。例如,如果將 thresh 設置為3,則只刪除包含至少 3 個空值的行。
import pandas as pd df = pd.DataFrame({'name': ['Tom', 'Jerry', 'Spike', 'Tyke'], 'age': [4, 3, 4, 1], 'gender': ['male', 'male', 'male', 'male'], 'fruit': ['apple', 'nan', 'orange', 'nan']}) # 只保留至少含有 3 個非空數據的行 df.dropna(thresh=3, inplace=True)
四、df.dropna() 的默認參數
在使用 df.dropna() 函數時,需要注意它的默認參數。默認情況下,該函數將剔除包含任何 NaN 值的行。
import pandas as pd df = pd.DataFrame({'name': ['Tom', 'Jerry', 'Spike', 'Tyke'], 'age': [4, 3, 4, 1], 'gender': ['male', 'male', 'male', 'male'], 'fruit': ['apple', 'nan', 'orange', 'nan']}) # 保留所有非空的行 df.dropna(axis=0, how='any', inplace=True)
在這裡,axis=0 表示刪除包含空值的行,即沿著行的方向刪除; how=’any’ 表示只要有一個空值就要刪除包含該空值的行。
五、df.dropna() 到底是刪除列還是行?
在讀取數據或創建 DataFrame 時,數據通常是一些行和列的列表。df.dropna() 默認情況下是在行上進行刪除操作,但是可以通過提供 axis=1 參數來剔除包含任何 NaN 值的列。如下所示:
import pandas as pd df = pd.DataFrame({'name': ['Tom', 'Jerry', 'Spike', 'Tyke'], 'age': [4, 3, 4, 1], 'gender': ['male', 'male', 'male', 'male'], 'fruit': ['apple', 'nan', 'orange', 'nan']}) #刪除至少有 1 個 NaN 值的列 df.dropna(axis=1, inplace=True)
六、df.dropna(how=’all’)
如果需要剔除所有行或列都包含 NaN 值的數據,則可以使用 how=’all’ 參數。如下所示:
import pandas as pd df = pd.DataFrame({'name': ['Tom', 'Jerry', 'Spike', 'Tyke'], 'age': [4, 3, 4, 1], 'gender': ['male', 'male', 'male', 'male'], 'fruit': ['apple', 'nan', 'orange', 'nan']}) # 刪除包含所有 NaN 值的行 df.dropna(how='all', inplace=True)
七、df.dropna(how=’any’)
通過使用 how=’any’ 參數,可以指定刪除至少包含一個 NaN 值的所有行或列。
import pandas as pd df = pd.DataFrame({'name': ['Tom', 'Jerry', 'Spike', 'Tyke'], 'age': [4, 3, 4, 1], 'gender': ['male', 'male', 'male', 'male'], 'fruit': ['apple', 'nan', 'orange', 'nan']}) # 刪除所有值至少含有 1 個 NaN 值的行 df.dropna(how='any', inplace=True)
總結
在本文中,我們詳細討論了 df.dropna() 函數在 Pandas 中的使用方法。我們從多個角度探討了該函數的作用、默認參數、如何使用改變默認行為以及如何刪除行或列中的 NaN 值。掌握 df.dropna() 函數的使用方法可以幫助分析師更好地處理缺失數據,並使得最終的數據結果更可靠。
原創文章,作者:XOYTR,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/331354.html