Pandas - 清理空單元格
空單元格
空單元格可能會在您分析資料時給出錯誤的結果。
刪除行
處理空單元格的一種方法是刪除包含空單元格的行。
這通常是可以接受的,因為資料集可能非常大,刪除幾行不會對結果產生重大影響。
示例
返回一個不含空單元格的新 DataFrame
import pandas as pd
df = pd.read_csv('data.csv')
new_df = df.dropna()
print(new_df.to_string())
自己動手試一試 »
注意:預設情況下,dropna()
方法會返回一個新的 DataFrame,而不會更改原始 DataFrame。
如果您想更改原始 DataFrame,請使用 inplace = True
引數
示例
刪除所有包含 NULL 值的行
import pandas as pd
df = pd.read_csv('data.csv')
df.dropna(inplace = True)
print(df.to_string())
自己動手試一試 »
注意:現在,dropna(inplace = True)
不會返回新的 DataFrame,但它會從原始 DataFrame 中刪除所有包含 NULL 值的行。
替換空值
處理空單元格的另一種方法是用新值替換它們。
這樣您就不必僅僅因為一些空單元格而刪除整行。
fillna()
方法允許我們用一個值替換空單元格
示例
用數字 130 替換 NULL 值
import pandas as pd
df = pd.read_csv('data.csv')
df.fillna(130, inplace = True)
自己動手試一試 »
僅為指定列替換
上面的例子替換了整個 DataFrame 中的所有空單元格。
要僅為一個列替換空值,請為 DataFrame 指定列名
示例
用數字 130 替換“Calories”列中的 NULL 值
import pandas as pd
df = pd.read_csv('data.csv')
df["Calories"].fillna(130, inplace = True)
自己動手試一試 »
使用平均值、中位數或眾數替換
替換空單元格的一種常見方法是計算該列的平均值、中位數或眾數。
Pandas 使用 mean()
、median()
和 mode()
方法來計算指定列的相應值
示例
計算平均值,並用它替換任何空值
import pandas as pd
df = pd.read_csv('data.csv')
x = df["Calories"].mean()
df["Calories"].fillna(x, inplace = True)
自己動手試一試 »
平均值 (Mean) = 平均值(所有值的總和除以值的數量)。
示例
計算中位數,並用它替換任何空值
import pandas as pd
df = pd.read_csv('data.csv')
x = df["Calories"].median()
df["Calories"].fillna(x, inplace = True)
自己動手試一試 »
中位數 (Median) = 在將所有值按升序排序後,中間的值。
示例
計算眾數,並用它替換任何空值
import pandas as pd
df = pd.read_csv('data.csv')
x = df["Calories"].mode()[0]
df["Calories"].fillna(x, inplace = True)
自己動手試一試 »
眾數 (Mode) = 出現頻率最高的值。