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.