Python數(shù)據(jù)分析的八種處理缺失值方法詳解
在本文中,我們將介紹 8 種不同的方法來解決缺失值問題,哪種方法最適合特定情況取決于數(shù)據(jù)和任務(wù)。歡迎收藏學(xué)習(xí),喜歡點(diǎn)贊支持,技術(shù)交流可以文末加群,盡情暢聊。
讓我們首先創(chuàng)建一個示例數(shù)據(jù)框并向其中添加一些缺失值。


我們有一個 10 行 6 列的數(shù)據(jù)框。
下一步是添加缺失值。 我們將使用 loc 方法選擇行和列組合,并使它們等于“np.nan”,這是標(biāo)準(zhǔn)缺失值表示之一。

這是數(shù)據(jù)框現(xiàn)在的樣子:

item 和 measure 1 列具有整數(shù)值,但由于缺少值,它們已被向上轉(zhuǎn)換為浮點(diǎn)數(shù)。
在 Pandas 1.0 中,引入了整數(shù)類型缺失值表示 (),因此我們也可以在整數(shù)列中包含缺失值。 但是,我們需要顯式聲明數(shù)據(jù)類型。


盡管有缺失值,我們現(xiàn)在可以保留整數(shù)列。
現(xiàn)在我們有一個包含一些缺失值的數(shù)據(jù)框。 是時候看看處理它們的不同方法了。
1. 刪除有缺失值的行或列
一種選擇是刪除包含缺失值的行或列。


使用默認(rèn)參數(shù)值,dropna 函數(shù)會刪除包含任何缺失值的行。數(shù)據(jù)框中只有一行沒有任何缺失值。同時我們還可以選擇使用軸參數(shù)刪除至少有一個缺失值的列。

2. 刪除只有缺失值的行或列
另一種情況是有一列或一行充滿缺失值。 這樣的列或行是無用的,所以我們可以刪除它們。
dropna 函數(shù)也可以用于此目的。 我們只需要改變 how 參數(shù)的值。

3. 根據(jù)閾值刪除行或列
基于“any”或“all”的刪除并不總是最好的選擇。 我們有時需要刪除具有“大量”或“一些”缺失值的行或列。
我們不能將這樣的表達(dá)式分配給 how 參數(shù),但 Pandas 為我們提供了一種更準(zhǔn)確的方法,即 thresh 參數(shù)。
例如,“thresh=4”意味著至少有 4 個非缺失值的行將被保留。 其他的將被丟棄。
我們的數(shù)據(jù)框有 6 列,因此將刪除具有 3 個或更多缺失值的行。


只有第三行有 2 個以上的缺失值,所以它是唯一一個被丟棄的。
4. 基于特定的列子集刪除
在刪除列時,我們可以只考慮部分列。
dropna 函數(shù)的子集參數(shù)用于此任務(wù)。 例如,我們可以刪除在度量 1 或度量 2 列中有缺失值的行,如下所示:


到目前為止,我們已經(jīng)看到了根據(jù)缺失值刪除行或列的不同方法。放棄并不是唯一的選擇。 在某些情況下,我們可能會選擇填充缺失值而不是刪除它們。
事實上,填充可能是更好的選擇,因為數(shù)據(jù)意味著價值。 如何填補(bǔ)缺失值,當(dāng)然取決于數(shù)據(jù)的結(jié)構(gòu)和任務(wù)。
fillna 函數(shù)用于填充缺失值。
5. 填充一個常數(shù)值
我們可以選擇一個常量值來替代缺失值。如果我們只給 fillna 函數(shù)一個常量值,它將用該值替換數(shù)據(jù)框中的所有缺失值。
更合理的方法是為不同的列確定單獨(dú)的常量值。 我們可以將它們寫入字典并將其傳遞給 values 參數(shù)。


item 列中的缺失值替換為 1014,而 measure 1 列中的缺失值替換為 0。
6. 填充聚合值
另一種選擇是使用聚合值,例如平均值、中位數(shù)或眾數(shù)。
下面這行代碼用該列的平均值替換了第 2 列中的缺失值。

7. 替換為上一個或下一個值
可以用該列中的前一個或下一個值替換該列中的缺失值。在處理時間序列數(shù)據(jù)時,此方法可能會派上用場。 假設(shè)您有一個包含每日溫度測量值的數(shù)據(jù)框,但缺少一天的溫帶。 最佳解決方案是使用第二天或前一天的溫度。
fillna 函數(shù)的方法參數(shù)用于執(zhí)行此任務(wù)。


“bfill”向后填充缺失值,以便將它們替換為下一個值??纯醋詈笠粰?。 缺失值被替換到第一行。 這可能不適合某些情況。
值得慶幸的是,我們可以限制用這種方法替換的缺失值的數(shù)量。 如果我們將 limit 參數(shù)設(shè)置為 1,那么一個缺失值只能用它的下一個值替換。 后面的第二個或第三個值將不會用于替換。
8. 使用另一個數(shù)據(jù)框填充
我們還可以將另一個數(shù)據(jù)幀傳遞給 fillna 函數(shù)。 新數(shù)據(jù)框中的值將用于替換當(dāng)前數(shù)據(jù)框中的缺失值。
將根據(jù)行索引和列名稱選擇值。 例如,如果 item 列的第二行中存在缺失值,則將使用新數(shù)據(jù)框中相同位置的值。


以上是具有相同列的兩個數(shù)據(jù)框。 第一個 沒有任何缺失值。
我們可以使用 fillna 函數(shù)如下:

df 中的值將替換為 df2 中關(guān)于列名和行索引的值。
總結(jié)
缺失將永遠(yuǎn)存在于我們的生活中。 沒有最好的方法來處理它們,但我們可以通過應(yīng)用準(zhǔn)確合理的方法來降低它們的影響。我們已經(jīng)介紹了 8 種不同的處理缺失值的方法,使用哪一個取決于數(shù)據(jù)和任務(wù)。
技術(shù)交流
歡迎轉(zhuǎn)載、收藏、有所收獲點(diǎn)贊支持一下!

到此這篇關(guān)于Python數(shù)據(jù)分析的八種處理缺失值方法詳解的文章就介紹到這了,更多相關(guān)Python 數(shù)據(jù)分析內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- python缺失值填充方法示例代碼
- Python數(shù)據(jù)預(yù)處理時缺失值的不同處理方式總結(jié)
- Python?數(shù)據(jù)清洗刪除缺失值替換缺失值詳情
- python?sklearn與pandas實現(xiàn)缺失值數(shù)據(jù)預(yù)處理流程詳解
- Python處理缺失值的8種不同方法實例
- Python缺失值處理方法
- Python3?DataFrame缺失值的處理方法
- python如何去除異常值和缺失值的插值
- Python?Pandas中缺失值NaN的判斷,刪除及替換
- Python數(shù)據(jù)分析之缺失值檢測與處理詳解
- python缺失值的解決方法總結(jié)
- Python中查找缺失值的三種方法
相關(guān)文章
python 定義函數(shù) 返回值只取其中一個的實現(xiàn)
這篇文章主要介紹了python 定義函數(shù) 返回值只取其中一個的實現(xiàn)操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-05-05
pandas探索你的數(shù)據(jù)實現(xiàn)可視化示例詳解
這篇文章主要為大家介紹了pandas探索你的數(shù)據(jù)實現(xiàn)可視化示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10
Python發(fā)送網(wǎng)絡(luò)請求(requests)
這篇文章主要介紹了Python發(fā)送網(wǎng)絡(luò)請求(requests),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-09-09
python實現(xiàn)不同文件夾下的函數(shù)相互調(diào)用
這篇文章主要介紹了python實現(xiàn)不同文件夾下的函數(shù)相互調(diào)用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08

