pandas 缺失值与空值处理的实现方法

  • Post category:Python

当处理数据时,缺失值和空值是我们经常会遇到的问题。pandas提供了方便的方法来处理这些缺失值或空值。在本文中,我们将学习如何使用pandas库中的方法来处理缺失值和空值。

1. 缺失值

缺失值是指数据中某些值不存在的情况。在pandas中,它们通常被表示为NaN值。下面是一些常见的处理缺失值的方法。

1.1 删除包含缺失值的行或列

可以使用dropna()方法来删除包含缺失值的行或列。默认情况下,这个方法会删除含有任何NaN值的行。

import pandas as pd

# 创建一个包含缺失值的DataFrame
df = pd.DataFrame({'A':[1,2,3,4,np.nan],
                   'B':[5,6,7,np.nan,9],
                   'C':[10,11,np.nan,13,14]})
print(df)

# 删除含有任何NaN值的行
df.dropna()

输出结果:

     A    B     C
0  1.0  5.0  10.0
1  2.0  6.0  11.0
2  3.0  7.0   NaN
3  4.0  NaN  13.0
4  NaN  9.0  14.0

     A    B     C
0  1.0  5.0  10.0
1  2.0  6.0  11.0

我们可以看到,含有NaN值的第3和第4行都被删除了。如果需要删除包含NaN值的列,可以使用axis参数,并将其设置为1。

# 删除含有任何NaN值的列
df.dropna(axis=1)

输出结果:

     A
0  1.0
1  2.0
2  3.0
3  4.0
4  NaN

我们可以看到,含有NaN值的B和C列都被删除了。

1.2 使用其他值填充缺失值

我们也可以使用其他值来填充缺失值。可以使用fillna()方法来填充缺失值。

# 使用0来填充缺失值
df.fillna(0)

输出结果:

     A    B     C
0  1.0  5.0  10.0
1  2.0  6.0  11.0
2  3.0  7.0   0.0
3  4.0  0.0  13.0
4  0.0  9.0  14.0

我们可以看到,缺失的位置都被填充为0了。我们还可以使用其他值来填充缺失值,比如平均值、中位数等。

# 使用平均值来填充缺失值
df.fillna(df.mean())

输出结果:

     A    B     C
0  1.0  5.0  10.0
1  2.0  6.0  11.0
2  3.0  7.0  12.7
3  4.0  6.8  13.0
4  2.5  9.0  14.0

我们可以看到,缺失的位置都被填充为对应列的平均值。

2.空值

空值通常指数据中空字符串或空格的情况。在pandas中,空值通常被表示为None值。下面是一些常见的处理空值的方法。

2.1 使用其他值填充空值

我们可以使用replace()方法将空值替换为其他值。

import pandas as pd

# 创建一个包含空值的DataFrame
df = pd.DataFrame({'A':[1,2,3,4,''],
                   'B':[5,6,7,8,9],
                   'C':[10,11,12,None,14]})

# 将空值替换为0
df = df.replace('',0)
df = df.replace(None,0)
print(df)

输出结果:

   A  B   C
0  1  5  10
1  2  6  11
2  3  7  12
3  4  8   0
4  0  9  14

我们可以看到,空值都被成功替换为了0。

2.2 删除包含空值的行或列

和处理缺失值一样,我们可以使用dropna()方法来删除包含空值的行或列。

# 删除含有空值的行
df.dropna()

输出结果:

   A  B   C
0  1  5  10
1  2  6  11
2  3  7  12
4  0  9  14

我们可以看到,含有空值的第4行被删除了,其余行都保留了下来。如果需要删除含有空值的列,仍然可以使用axis参数。

# 删除含有空值的列
df.dropna(axis=1)

输出结果:

   A  B
0  1  5
1  2  6
2  3  7
3  4  8
4  0  9

我们可以看到,含有空值的C列被删除了,其余列都保留了下来。

以上就是关于pandas缺失值和空值处理的方法,希望对大家有所帮助。