详解Pandas 处理缺失值指令大全

1. Pandas 处理缺失值介绍

在实际数据分析中,缺失值是非常常见的问题。针对数据集中可能存在的缺失值,Pandas 提供了一些方法方便我们进行处理。

2. 读入数据

2.1. 读入 csv 文件

可以使用 pandas.read_csv() 函数来读入 csv 文件,并将其转换为 DataFrame。其中,可以指定参数来处理缺失值。

import pandas as pd

# 读入 csv 文件

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

# 打印前 5 行数据

print(df.head())

2.2. 读入 Excel 文件

如果需要读入 Excel 文件,可以使用 pandas.read_excel() 函数。

import pandas as pd

# 读入 Excel 文件

df = pd.read_excel('data.xlsx')

# 打印前 5 行数据

print(df.head())

3. 查看缺失值

在进行缺失值处理之前,我们需要先查看数据集中是否存在缺失值。可以使用 DataFrame.isnull() 函数进行查看。该函数会返回一个布尔型 DataFrame,其中缺失值为 True,非缺失值为 False。

# 查看数据集中是否存在缺失值

print(df.isnull())

4. 删除缺失值

可以使用 DataFrame.dropna() 函数来删除缺失值。该函数会返回一个删除缺失值后的 DataFrame。其中,可以通过指定 axis 参数来控制是删除行还是列,通过指定 how 参数来控制删除方式。

4.1. 删除含有缺失值的行

可以使用 how='any' 参数来删除含有缺失值的行。

# 删除含有缺失值的行

df_drop_row = df.dropna(axis=0, how='any')

print(df_drop_row.head())

4.2. 删除含有缺失值的列

可以使用 how='any' 参数来删除含有缺失值的列。

# 删除含有缺失值的列

df_drop_col = df.dropna(axis=1, how='any')

print(df_drop_col.head())

5. 替换缺失值

除了删除缺失值之外,我们还可以使用 DataFrame.fillna() 函数来替换缺失值。该函数可以通过指定 value 参数来指定用什么数值来替换缺失值,通过指定 method 参数来指定使用何种方法进行替换。

5.1. 用固定数值进行替换

可以使用 value 参数来用固定数值进行替换。

# 用固定数值进行替换

df_fillna = df.fillna(value=0.0)

print(df_fillna.head())

5.2. 用前一个非缺失值进行替换

可以使用 method='pad' 参数来用前一个非缺失值进行替换。

# 用前一个非缺失值进行替换

df_fillna_pad = df.fillna(method='pad')

print(df_fillna_pad.head())

5.3. 用后一个非缺失值进行替换

可以使用 method='bfill' 参数来用后一个非缺失值进行替换。

# 用后一个非缺失值进行替换

df_fillna_bfill = df.fillna(method='bfill')

print(df_fillna_bfill.head())

6. 插值法填充缺失值

除了上述方法之外,还可以使用插值法来填充缺失值。插值法是利用已知数据向未知数据进行插值的一种方法。可以使用 DataFrame.interpolate() 函数实现缺失值的插值。其中,可以通过指定 method 参数来指定使用何种方法进行插值。

6.1. 线性插值法

可以使用 method='linear' 参数来使用线性插值法进行缺失值的插值处理。

# 线性插值法

df_interpolate_linear = df.interpolate(method='linear')

print(df_interpolate_linear.head())

6.2. 二次插值法

可以使用 method='quadratic' 参数来使用二次插值法进行缺失值的插值处理。

# 二次插值法

df_interpolate_quadratic = df.interpolate(method='quadratic')

print(df_interpolate_quadratic.head())

6.3. 立方插值法

可以使用 method='cubic' 参数来使用立方插值法进行缺失值的插值处理。

# 立方插值法

df_interpolate_cubic = df.interpolate(method='cubic')

print(df_interpolate_cubic.head())

7. 参考文献

pandas documentation. 连续值处理. https://pandas.pydata.org/pandas-docs/stable/user_guide/missing_data.html#missing-data.

后端开发标签