介紹
在這個教程中,您將學習如何使用pandas的DataFrame dropna()
函數。
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.
如果all
值為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
使用具有 thresh
的第二個 DataFrame 刪除不符合至少 3
個非 NA
值的閾值的行:
不具有至少 3
個非 NA
的行將被刪除:
OutputName ID Population Regions Endangered
0 Shark 1 100 1 NaT
1 Whale 2 200 None NaT
第三、第四和第五行被刪除。
針對特定 子集
刪除行或列
使用具有 subset
的第二個 DataFrame 刪除在 Population
列中具有 NA
值的行:
具有 Population
具有 NA
值的行將被刪除:
OutputName ID Population Regions Endangered
0 Shark 1 100 1 NaT
1 Whale 2 200 None NaT
第三、第四和第五行被刪除。
在從 DataFrame 刪除列時,您也可以指定 subset
中的 index
值:
在行 1
和 2
的子集中包含 NA
值的列:
OutputName ID
0 Shark 1
1 Whale 2
2 Jellyfish 3
3 Starfish 4
4 NaT NaT
第三、第四和第五列被刪除。
在删除行或列后更改源DataFrame
默认情况下,dropna()
不会修改源DataFrame。但在某些情况下,您可能希望通过使用inplace
来在处理大型源DataFrame时节省内存。
此代码不使用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