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)
自己尝试 »
平均值 = 平均值(所有值的总和除以值的个数)。
示例
计算中位数,并用它替换任何空值
import pandas as pd
df = pd.read_csv('data.csv')
x = df["Calories"].median()
df["Calories"].fillna(x, inplace = True)
自己尝试 »
中位数 = 将所有值按升序排序后,位于中间的值。
示例
计算众数,并用它替换任何空值
import pandas as pd
df = pd.read_csv('data.csv')
x = df["Calories"].mode()[0]
df["Calories"].fillna(x, inplace = True)
自己尝试 »
众数 = 出现频率最高的值。