关键词

pandas 空数据处理方法详解

Pandas空数据处理方法详解

在实际数据处理中,我们经常会遇到数据缺失的情况,这时候就需要对空数据进行处理。Pandas提供了一系列的空数据处理方法。

缺失值与空值

在Pandas中,缺失值和空值是不同的。缺失值指用NaN或其他占位符代替丢失的数据,而空值指没有数据。

例如,在一个有日期和价格的DataFrame中,日期列有全部的数据,价格列中有一些NaN值,这些NaN值是由于商品没有售出。因此,在价格NaN值的位置上,我们可以用0进行替换。

有时候,数据丢失预示着不完整的数据记录。另外,数据可能会因为许多原因出现问题,比如:格式不正确、数据输入错误、空值或其他原因。

查找空数据

我们需要先找到数据中具体位置。Pandas提供了isnull()和notnull()两个函数,可以用于检查我们处理的数据是否包含NaN值。

下面是一个DataFrame示例:

import pandas as pd
import numpy as np

df = pd.DataFrame({ 'A': [1, 2, np.NaN],
                    'B': [np.NaN, 5, 6]})

df中有两个列,A和B。我们可以用isnull()函数找到数据中的NaN值:

df.isnull()

输出结果是:

       A      B
0  False   True
1  False  False
2   True  False

这样我们就可以准确定位数据中的空值了。

空值处理方法

Pandas提供了几种处理空值的方法,下面介绍一些常用的方法。

1. 删除空值

使用dropna()函数可以删除包含空值的行或列。默认情况下,该函数删除NaN值,但也可以删除包含None或其他值的行或列。

例如,我们有下面的DataFrame:

df = pd.DataFrame({'A': [1, np.NaN, 3, 4],
                  'B': [2, 5, np.NaN, 8]})

我们可以使用以下代码删除包含NaN值的行:

df.dropna()

此时,删除了第1行和第3行包含NaN值的行,输出结果如下:

     A  B
0  1.0  2.0
3  4.0  8.0

同样的,我们可以删除包含NaN值的列:

df.dropna(axis=1)

这里删除了包含NaN值的第2列B,输出结果如下:

     A
0  1.0
1  NaN
2  3.0
3  4.0

2. 填充空值

在某些情况下,我们需要将空值替换为其他的数值。这时候可以使用fillna()函数。

例如,以下DataFrame有包含NaN值的列:

df = pd.DataFrame({'A': [1, 2, np.NaN, 4],
                   'B': [5, np.NaN, 7, np.NaN],
                   'C': [np.NaN, 10, 11, 12]})

我们可以将NaN值替换为0:

df.fillna(value=0)

输出结果为:

     A    B     C
0  1.0  5.0   0.0
1  2.0  0.0  10.0
2  0.0  7.0  11.0
3  4.0  0.0  12.0

也可以将NaN值设置为前一行的值:

df.fillna(method='pad')

输出结果为:

     A    B     C
0  1.0  5.0   NaN
1  2.0  5.0  10.0
2  2.0  7.0  11.0
3  4.0  7.0  12.0

示例

示例1: 删除空值

假设我们有如下DataFrame:

import pandas as pd
import numpy as np

df = pd.DataFrame({'Name': ['Tom', 'Jack', 'Bill', 'Steve', 'Chris', 'Mark'],
                   'Age': [20, 21, np.NaN, 19, 20, np.NaN],
                   'Gender': ['M', 'M', 'F', 'M', 'M', 'M']})

我们可以使用dropna()函数删除包含NaN值的行:

df.dropna()

输出结果为:

    Name   Age Gender
0    Tom  20.0      M
1   Jack  21.0      M
3  Steve  19.0      M
4  Chris  20.0      M

示例2: 替换空值

假设我们有如下DataFrame:

import pandas as pd
import numpy as np

df = pd.DataFrame({'Name': ['Tom', 'Jack', 'Bill', 'Steve', 'Chris', 'Mark'],
                   'Age': [20, 21, np.NaN, 19, 20, np.NaN],
                   'Gender': ['M', 'M', 'F', 'M', 'M', 'M']})

我们可以使用fillna()函数将NaN值替换为0:

df.fillna(value=0)

输出结果为:

    Name  Age Gender
0    Tom 20.0      M
1   Jack 21.0      M
2   Bill  0.0      F
3  Steve 19.0      M
4  Chris 20.0      M
5   Mark  0.0      M

总结

本文介绍了Pandas处理空数据的方法。具体来说,我们可以使用isnull()和notnull()函数查找空数据,使用dropna()函数删除包含空数据的行或列,使用fillna()函数替换空数据。

本文链接:http://task.lmcjl.com/news/17251.html

展开阅读全文