目录

Pandas - 清洁空单元


空单元格

分析数据时,空单元格可能会给出错误的结果。


删除行

处理空单元格的一种方法是删除包含空单元格的行。

这通常是可以的,因为数据集可能非常大,删除几行不会对结果产生太大影响。

示例

返回一个没有空单元格的新数据框:

import pandas as pd

df = pd.read_csv('data.csv')

new_df = df.dropna()

print(new_df.to_string())
亲自试一试 »

笔记:默认情况下,dropna()方法返回一个新的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()方法允许我们用值替换空单元格:

示例

将 NULL 值替换为数字 130:

import pandas as pd

df = pd.read_csv('data.csv')

df.fillna(130, inplace = True)
亲自试一试 »

仅替换指定的列

上面的示例替换了整个数据框中的所有空单元格。

要仅替换一列的空值,请指定列名对于数据框:

示例

将 "Calories" 列中的 NULL 值替换为数字 130:

import pandas as pd

df = pd.read_csv('data.csv')

df["Calories"].fillna(130, inplace = True)
亲自试一试 »


使用均值、中位数或众数替换

替换空单元格的常见方法是计算列的平均值、中值或众数。

Pandas使用mean()median()mode()计算指定列的相应值的方法:

示例

计算 MEAN,并用它替换任何空值:

import pandas as pd

df = pd.read_csv('data.csv')

x = df["Calories"].mean()

df["Calories"].fillna(x, inplace = True)
亲自试一试 »

意思是= 平均值(所有值的总和除以值的数量)。

示例

计算 MEDIAN,并用它替换任何空值:

import pandas as pd

df = pd.read_csv('data.csv')

x = df["Calories"].median()

df["Calories"].fillna(x, inplace = True)
亲自试一试 »

中位数= 将所有值升序排序后,中间的值。

示例

计算 MODE,并用它替换任何空值:

import pandas as pd

df = pd.read_csv('data.csv')

x = df["Calories"].mode()[0]

df["Calories"].fillna(x, inplace = True)
亲自试一试 »

模式= 最常出现的值。