📜  用 0 填充缺失值 - Python (1)

📅  最后修改于: 2023-12-03 15:11:14.346000             🧑  作者: Mango

用 0 填充缺失值 - Python

在数据分析中,我们有时会遇到缺失值的情况。缺失值可能是由于数据采集、存储或传输过程中出现错误,也可能是因为数据本身就不存在。

缺失值会对数据分析带来一定的影响,造成分析结果的不准确性。因此我们需要对缺失值进行处理。

一种常见的处理方法是用 0 填充缺失值。下面是一些用 Python 处理缺失值的方法:

Pandas库的fillna()方法

fillna() 方法可以用来填充缺失值,它可以接收一个数值、字符串、Series 或 DataFrame。当我们传递一个数值时,fillna() 方法会将缺失值替换为该数值。

import pandas as pd
import numpy as np

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

df.fillna(0, inplace=True)
print(df)

输出结果:

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

     A    B     C
0  1.0  5.0   9.0
1  2.0  0.0  10.0
2  0.0  7.0  11.0
3  4.0  8.0   0.0
Numpy库的where()方法

Numpy 库中的 where() 方法可以用来条件填充缺失值。它可以接收两个数组,第一个数组是条件,当条件成立时,将第二个数组中相应位置的值填入到原数组中。

例如,我们可以将缺失值替换为 0,非缺失值替换为原值:

import pandas as pd
import numpy as np

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

df = np.where(pd.isna(df), 0, df)
print(df)

输出结果:

array([[ 1.,  5.,  9.],
       [ 2.,  0., 10.],
       [ 0.,  7., 11.],
       [ 4.,  8.,  0.]])
SciPy库的nan_to_num()方法

nan_to_num() 方法可以用来将缺失值替换为指定的数值。它可以接收一个数组,替换所有的 NaN 值为指定数值。

例如,我们可以将缺失值替换为 0:

import pandas as pd
import numpy as np
from scipy import nan_to_num

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

df = nan_to_num(df, nan=0)
print(df)

输出结果:

array([[ 1.,  5.,  9.],
       [ 2.,  0., 10.],
       [ 0.,  7., 11.],
       [ 4.,  8.,  0.]])

以上三种方法均可以用来处理缺失值,其中 fillna() 方法是 Pandas 库提供的专门用来处理缺失值的方法,也是最常用的一种方法。