溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Python數(shù)據(jù)分析中如何處理缺失值

發(fā)布時間:2021-11-18 13:03:54 來源:億速云 閱讀:197 作者:小新 欄目:開發(fā)技術(shù)

小編給大家分享一下Python數(shù)據(jù)分析中如何處理缺失值,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

讓我們首先創(chuàng)建一個示例數(shù)據(jù)框并向其中添加一些缺失值。

Python數(shù)據(jù)分析中如何處理缺失值

Python數(shù)據(jù)分析中如何處理缺失值

我們有一個 10 行 6 列的數(shù)據(jù)框。

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

Python數(shù)據(jù)分析中如何處理缺失值

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

Python數(shù)據(jù)分析中如何處理缺失值

item 和 measure 1 列具有整數(shù)值,但由于缺少值,它們已被向上轉(zhuǎn)換為浮點數(shù)。

在 Pandas 1.0 中,引入了整數(shù)類型缺失值表示 (),因此我們也可以在整數(shù)列中包含缺失值。 但是,我們需要顯式聲明數(shù)據(jù)類型。

Python數(shù)據(jù)分析中如何處理缺失值

Python數(shù)據(jù)分析中如何處理缺失值

盡管有缺失值,我們現(xiàn)在可以保留整數(shù)列。

現(xiàn)在我們有一個包含一些缺失值的數(shù)據(jù)框。 是時候看看處理它們的不同方法了。

1. 刪除有缺失值的行或列

一種選擇是刪除包含缺失值的行或列。

Python數(shù)據(jù)分析中如何處理缺失值

Python數(shù)據(jù)分析中如何處理缺失值

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

Python數(shù)據(jù)分析中如何處理缺失值

2. 刪除只有缺失值的行或列

另一種情況是有一列或一行充滿缺失值。 這樣的列或行是無用的,所以我們可以刪除它們。

dropna 函數(shù)也可以用于此目的。 我們只需要改變 how 參數(shù)的值。

Python數(shù)據(jù)分析中如何處理缺失值

3. 根據(jù)閾值刪除行或列

基于“any”或“all”的刪除并不總是最好的選擇。 我們有時需要刪除具有“大量”或“一些”缺失值的行或列。

我們不能將這樣的表達(dá)式分配給 how 參數(shù),但 Pandas 為我們提供了一種更準(zhǔn)確的方法,即 thresh 參數(shù)。

例如,“thresh=4”意味著至少有 4 個非缺失值的行將被保留。 其他的將被丟棄。

我們的數(shù)據(jù)框有 6 列,因此將刪除具有 3 個或更多缺失值的行。

Python數(shù)據(jù)分析中如何處理缺失值

Python數(shù)據(jù)分析中如何處理缺失值

只有第三行有 2 個以上的缺失值,所以它是唯一一個被丟棄的。

4. 基于特定的列子集刪除

在刪除列時,我們可以只考慮部分列。

dropna 函數(shù)的子集參數(shù)用于此任務(wù)。 例如,我們可以刪除在度量 1 或度量 2 列中有缺失值的行,如下所示:

Python數(shù)據(jù)分析中如何處理缺失值

Python數(shù)據(jù)分析中如何處理缺失值

到目前為止,我們已經(jīng)看到了根據(jù)缺失值刪除行或列的不同方法。放棄并不是唯一的選擇。 在某些情況下,我們可能會選擇填充缺失值而不是刪除它們。

事實上,填充可能是更好的選擇,因為數(shù)據(jù)意味著價值。 如何填補(bǔ)缺失值,當(dāng)然取決于數(shù)據(jù)的結(jié)構(gòu)和任務(wù)。

fillna 函數(shù)用于填充缺失值。

5. 填充一個常數(shù)值

我們可以選擇一個常量值來替代缺失值。如果我們只給 fillna 函數(shù)一個常量值,它將用該值替換數(shù)據(jù)框中的所有缺失值。

更合理的方法是為不同的列確定單獨的常量值。 我們可以將它們寫入字典并將其傳遞給 values 參數(shù)。

Python數(shù)據(jù)分析中如何處理缺失值

Python數(shù)據(jù)分析中如何處理缺失值

item 列中的缺失值替換為 1014,而 measure 1 列中的缺失值替換為 0。

6. 填充聚合值

另一種選擇是使用聚合值,例如平均值、中位數(shù)或眾數(shù)。

下面這行代碼用該列的平均值替換了第 2 列中的缺失值。

Python數(shù)據(jù)分析中如何處理缺失值

7. 替換為上一個或下一個值

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

fillna 函數(shù)的方法參數(shù)用于執(zhí)行此任務(wù)。

Python數(shù)據(jù)分析中如何處理缺失值

Python數(shù)據(jù)分析中如何處理缺失值

“bfill”向后填充缺失值,以便將它們替換為下一個值。看看最后一欄。 缺失值被替換到第一行。 這可能不適合某些情況。

值得慶幸的是,我們可以限制用這種方法替換的缺失值的數(shù)量。 如果我們將 limit 參數(shù)設(shè)置為 1,那么一個缺失值只能用它的下一個值替換。 后面的第二個或第三個值將不會用于替換。

8. 使用另一個數(shù)據(jù)框填充

我們還可以將另一個數(shù)據(jù)幀傳遞給 fillna 函數(shù)。 新數(shù)據(jù)框中的值將用于替換當(dāng)前數(shù)據(jù)框中的缺失值。

將根據(jù)行索引和列名稱選擇值。 例如,如果 item 列的第二行中存在缺失值,則將使用新數(shù)據(jù)框中相同位置的值。

Python數(shù)據(jù)分析中如何處理缺失值

Python數(shù)據(jù)分析中如何處理缺失值

以上是具有相同列的兩個數(shù)據(jù)框。 第一個 沒有任何缺失值。

我們可以使用 fillna 函數(shù)如下:

Python數(shù)據(jù)分析中如何處理缺失值

df 中的值將替換為 df2 中關(guān)于列名和行索引的值。

看完了這篇文章,相信你對“Python數(shù)據(jù)分析中如何處理缺失值”有了一定的了解,如果想了解更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI