如何使用pandas刪除數據表中的缺失值?

在數據分析和處理中,經常會遇到數據缺失的情況。數據缺失是常見的數據質量問題之一,因為缺失的數據可能會導致結果的偏差或不準確。Pandas是一個用於數據處理和分析的Python庫,它提供了一些有用的函數來處理數據中的缺失值。本文將介紹如何使用pandas刪除數據表中的缺失值。

一、選取含缺失值的數據表

在開始之前,我們需要一個含缺失值的數據表來進行調試和演示。下面是一個包含缺失值的數據表:


import pandas as pd
import numpy as np
data = {'name': ['Alice', 'Bob', 'Charlie', 'David', 'Ella'],
        'age': [25, 20, np.nan, 30, 35],
        'gender': ['F', 'M', np.nan, 'M', 'F'],
        'score': [80, 75, 85, 90, np.nan]}
df = pd.DataFrame(data)
print(df)

運行以上代碼會輸出以下結果:


       name   age gender  score
0     Alice  25.0      F   80.0
1       Bob  20.0      M   75.0
2   Charlie   NaN    NaN   85.0
3     David  30.0      M   90.0
4      Ella  35.0      F    NaN

可以看到,數據表中共有4個缺失值。下面我們將介紹如何使用Pandas來刪除這些缺失值。

二、刪除缺失值

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

在 pandas 中,最簡單的刪除缺失值的方法是簡單地將缺失值所在的行或列刪除。可以使用 dropna() 函數來實現。默認情況下,dropna() 函數會刪除任何包含缺失值的行。


# 刪除含有缺失值的行
df1 = df.dropna()
# 刪除含有缺失值的列
df2 = df.dropna(axis=1)

其中,參數 axis=1 表示刪除含有缺失值的列。

刪除行操作的結果:


     name   age gender  score
0   Alice  25.0      F   80.0
1     Bob  20.0      M   75.0
3   David  30.0      M   90.0

刪除列操作的結果:


      name
0    Alice
1      Bob
2  Charlie
3    David
4     Ella

可以看到,行中含有缺失值的全部被刪除了。

2. 只刪除全部為缺失值的行或列

除了刪除含有缺失值的行或列之外,Pandas 還提供了一種方法可以只刪除全部為缺失值的行或列。可以使用 dropna() 函數的參數 how='all' 來實現。如果使用了這個參數,dropna() 函數只會刪除全部為缺失值的行或列。


# 刪除全部為缺失值的行
df3 = df.dropna(how='all')
# 刪除全部為缺失值的列
df4 = df.dropna(axis=1, how='all')

刪除行操作的結果:


      name   age gender  score
0    Alice  25.0      F   80.0
1      Bob  20.0      M   75.0
2  Charlie   NaN    NaN   85.0
3    David  30.0      M   90.0
4     Ella  35.0      F    NaN

刪除列操作的結果:


       name   age gender  score
0     Alice  25.0      F   80.0
1       Bob  20.0      M   75.0
2   Charlie   NaN    NaN   85.0
3     David  30.0      M   90.0
4      Ella  35.0      F    NaN

可以看到,在行和列中只刪除了全部為缺失值的那一行或列。

3. 刪除任意一行或列中包含缺失值的數據

除了只刪除全部為缺失值的行或列之外,Pandas 還提供了一種方法可以刪除任意一行或列中包含缺失值的數據。可以使用 dropna() 函數的參數 thresh=n 來實現。如果使用了這個參數,dropna() 函數將只保留至少包含 n 個非缺失值的行或列。也就是說,如果某一行或列中缺失值的數量超過了 n-1 個,那麼這一行或列也會被刪除。


# 刪除至少含有 3 個缺失值的行
df5 = df.dropna(thresh=2)
# 刪除至少含有 2 個缺失值的列
df6 = df.dropna(axis=1, thresh=4)

刪除行操作的結果:


      name   age gender  score
0    Alice  25.0      F   80.0
1      Bob  20.0      M   75.0
3    David  30.0      M   90.0
4     Ella  35.0      F    NaN

刪除列操作的結果:


      name  score
0    Alice   80.0
1      Bob   75.0
2  Charlie   85.0
3    David   90.0
4     Ella    NaN

可以看到,在滿足條件的情況下,只刪除了含有缺失值的那些行或列。

三、填充缺失值

除了刪除缺失值之外,有時候也需要填充缺失值。可以使用 fillna() 函數來實現缺失值的填充。一般來說,可以設置一個值或使用某種演算法填充缺失值。

1. 使用一個固定的值填充缺失值

最簡單的填充方法是使用一個固定的值來填充所有的缺失值。可以使用 fillna() 函數,並傳入一個指定的數字或字元串。


# 使用固定值來填充缺失值
df7 = df.fillna(0)

填充操作的結果:


      name   age gender  score
0    Alice  25.0      F   80.0
1      Bob  20.0      M   75.0
2  Charlie   0.0      0   85.0
3    David  30.0      M   90.0
4     Ella  35.0      F    0.0

可以看到,缺失值都被填充為了指定的數字 0。

2. 使用平均數或中位數填充缺失值

除了使用固定值外,還可以使用一些演算法來填充缺失值,例如平均值、中位數、插值等。使用 fillna() 函數的參數來傳入指定的演算法。


# 使用平均數填充 "age" 列的缺失值
df8 = df.fillna({'age': df['age'].mean()})
# 使用中位數填充 "score" 列的缺失值
df9 = df.fillna({'score': df['score'].median()})

填充操作的結果:


      name   age gender  score
0    Alice  25.0      F   80.0
1      Bob  20.0      M   75.0
2  Charlie  27.5    NaN   85.0
3    David  30.0      M   90.0
4     Ella  35.0      F   82.5

可以看到,缺失值都被填充為了指定演算法所計算得到的結果。

3. 使用插值演算法填充缺失值

除了使用平均值和中位數之外,還可以使用插值演算法來填充缺失值。插值是一種對數據進行預測的技術,它可以在缺少數據的情況下預測缺失值。Pandas 提供了 interpolate() 函數來進行插值。


# 使用插值演算法填充缺失值
df10 = df.interpolate()

填充操作的結果:


      name    age gender  score
0    Alice  25.00      F  80.00
1      Bob  20.00      M  75.00
2  Charlie  23.33    NaN  85.00
3    David  30.00      M  90.00
4     Ella  35.00      F  87.50

可以看到,在使用插值演算法填充之後,缺失值的分布更加接近真實值。

四、總結

本文介紹了如何使用 Pandas 刪除數據表中的缺失值。我們討論了三種刪除缺失值的方法:刪除行和列、刪除全部為缺失值的行和列、刪除任意一行或列中包含缺失值的數據。我們還介紹了如何填充缺失值,包括使用固定值、平均數、中位數和插值演算法來填充缺失值。這些方法可以幫助我們更好地處理數據缺失問題。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/197603.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-03 20:04
下一篇 2024-12-03 20:05

相關推薦

  • 如何使用Python獲取某一行

    您可能經常會遇到需要處理文本文件數據的情況,在這種情況下,我們需要從文本文件中獲取特定一行的數據並對其進行處理。Python提供了許多方法來讀取和處理文本文件中的數據,而在本文中,…

    編程 2025-04-29
  • 如何使用jumpserver調用遠程桌面

    本文將介紹如何使用jumpserver實現遠程桌面功能 一、安裝jumpserver 首先我們需要安裝並配置jumpserver。 $ wget -O /etc/yum.repos…

    編程 2025-04-29
  • Hibernate註解聯合主鍵 如何使用

    解答:Hibernate的註解方式可以用來定義聯合主鍵,使用@Embeddable和@EmbeddedId註解。 一、@Embeddable和@EmbeddedId註解 在Hibe…

    編程 2025-04-29
  • 如何使用Python讀取CSV數據

    在數據分析、數據挖掘和機器學習等領域,CSV文件是一種非常常見的文件格式。Python作為一種廣泛使用的編程語言,也提供了方便易用的CSV讀取庫。本文將介紹如何使用Python讀取…

    編程 2025-04-29
  • 如何使用HTML修改layui內部樣式影響全局

    如果您想要使用layui來構建一個美觀的網站或應用,您可能需要使用一些自定義CSS來修改layui內部組件的樣式。然而,修改layui組件的樣式可能會對整個頁面產生影響,甚至可能破…

    編程 2025-04-29
  • 如何使用random生成不重複的隨機數

    在編程開發中,我們經常需要使用隨機數來模擬一些場景或生成一些數據。但是如果隨機數重複,就會造成數據的不準確性。這時我們就需要使用random庫來生成不重複且隨機的數值。下面將從幾個…

    編程 2025-04-29
  • 如何使用GPU加速運行Python程序——以CSDN為中心

    GPU的強大性能是眾所周知的。而隨著深度學習和機器學習的發展,越來越多的Python開發者將GPU應用於深度學習模型的訓練過程中,提高了模型訓練效率。在本文中,我們將介紹如何使用G…

    編程 2025-04-29
  • 如何使用Python導入Random庫

    Python是一門優秀的編程語言,它擁有豐富的第三方庫和模塊。其中,Random庫可謂是最常用的庫之一,它提供了用於生成隨機數的功能。對於開發人員而言,使用Random庫能夠提高開…

    編程 2025-04-29
  • 理解agentmain方法如何使用

    如果你不清楚如何使用agentmain方法,那麼這篇文章將會為你提供全面的指導。 一、什麼是agentmain方法 在Java SE 5.0中,Java提供了一個機制,允許程序員在…

    編程 2025-04-29
  • 如何使用Python將print輸出到界面?

    在Python中,print是最常用的調試技巧之一。在編寫代碼時,您可能需要在屏幕上輸出一些值、字元串或結果,以便您可以更好地理解並調試代碼。因此,在Python中將print輸出…

    編程 2025-04-29

發表回復

登錄後才能評論