在數據分析和處理中,經常會遇到數據缺失的情況。數據缺失是常見的數據質量問題之一,因為缺失的數據可能會導致結果的偏差或不準確。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