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) = 出现频率最高的值。