Python Pandas 清理空(NULL)单元格

Pandas 中,清理空(NULL)单元格是数据清洗的重要步骤,常用方法包括使用 isnull() 检查缺失值、dropna() 删除包含空值的行或列、fillna() 用固定值或统计值(如均值、中位数)填充空值,以确保数据完整性和分析结果的准确性。本文主要介绍Python Pandas 清理空(NULL)单元格。

1、空单元格

分析数据时,空单元格可能会给带来错误的结果。空单元格是指数据表中缺失或未填写的部分,常在数据采集不完整或处理过程中产生。在数据分析中,需通过检测、删除或填充等方式对空单元格进行处理,以提高数据的完整性和分析的有效性。

2、删除行

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

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

例如:

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

import pandas as pd

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

new_df = df.dropna()

print(new_df.to_string())

在清理示例中,将使用一个名为“dirtydata.csv”的CSV文件。

dirtydata.csv文件:https://www.cjavapy.com/download/5fe1f9d0dc72d93b4993067e/

注意:默认情况下,dropna()方法返回一个new数据框,并且不会更改原始DataFrame

如想改变原始的DataFrame,使用inplace = True参数:

例如:

删除所有带有NULL值的行:

import pandas as pd

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

df.dropna(inplace = True)

print(df.to_string())

Note:

dropna(inplace = True)不会返回一个新的DataFrame,但是它会从原始DataFrame中删除包含NULL值的所有行。

3、替换空值

处理空单元格的另一种方法是改为插入新值。

这样,不必仅由于某些空单元格而删除整个行。

fillna()方法允许我们用一个值替换空单元格:

例如:

NULL值替换为数字130

import pandas as pd

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

df.fillna(130, inplace = True)

仅替换指定的列

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

要仅替换一列的空值,请为DataFrame指定列名:

例如:

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

import pandas as pd

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

df["Calories"].fillna(130, inplace = True)

4、Replace 使用Mean, Median, 或 Mode

替换空单元格的一种常用方法是计算列的平均值,中位数或众数。

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

例如:

计算平均值,并用其替换任何空值:

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)
推荐阅读
cjavapy编程之路首页