一、处理缺失值的三大函数
1. fillna
函数
fillna
函数用于填充缺失值,可以用一个具体值或者方法来填充。
参数说明:
value
:用于填充缺失值的标量值、字典或Series。method
:填充方法,默认是None
,可以是以下两个值:ffill
(前向填充):用前一个非缺失值填充。bfill
(后向填充):用后一个非缺失值填充。
axis
:沿哪个轴填充缺失值,默认是0(行)。inplace
:是否在原地修改数据,默认是False
。limit
:最大填充次数。
示例代码:
import pandas as pd
data = {'A': [1, 2, None, 4], 'B': [None, 2, 3, 4]}
df = pd.DataFrame(data)
print("原始数据:\n", df)
# 使用具体值填充
df_filled = df.fillna(0)
print("填充后的数据:\n", df_filled)
# 使用前向填充
df_ffill = df.fillna(method='ffill')
print("前向填充后的数据:\n", df_ffill)
# 使用后向填充
df_bfill = df.fillna(method='bfill')
print("后向填充后的数据:\n", df_bfill)
2. interpolate
函数
interpolate
函数用于插值缺失值,根据数据的趋势填补缺失值。
参数说明:
method
:插值方法,默认是linear
线性插值,可以选择其他方法如polynomial
、spline
等。axis
:沿哪个轴插值,默认是0(行)。limit
:最多插值的缺失值数量。inplace
:是否在原地修改数据,默认是False
。limit_direction
:插值方向,可以是forward
、backward
或者both
。order
:如果method
是polynomial
,需要指定多项式的阶数。
示例代码:
import pandas as pd
import numpy as np
data = {'A': [1, 2, np.nan, 4, 5, np.nan, 7]}
df = pd.DataFrame(data)
print("原始数据:\n", df)
# 使用线性插值
df_interpolated = df.interpolate()
print("线性插值后的数据:\n", df_interpolated)
# 使用多项式插值(2阶)
df_poly_interpolated = df.interpolate(method='polynomial', order=2)
print("多项式插值后的数据:\n", df_poly_interpolated)
3. dropna
函数
dropna
函数用于删除缺失值,可以删除包含NaN的行或列。
参数说明:
axis
:删除哪个轴上的缺失值,默认是0(行)。how
:删除方式,any
表示只要有缺失值就删除,all
表示全部是缺失值才删除。thresh
:非缺失值的数量至少达到这个值,才不删除。subset
:指定查看缺失值的列或行。inplace
:是否在原地修改数据,默认是False
。
示例代码:
import pandas as pd
data = {'A': [1, None, 3, None], 'B': [None, 2, 3, 4]}
df = pd.DataFrame(data)
print("原始数据:\n", df)
# 删除包含NaN的行
df_dropped = df.dropna()
print("删除缺失值后的数据(行):\n", df_dropped)
# 删除包含NaN的列
df_dropped_col = df.dropna(axis=1)
print("删除缺失值后的数据(列):\n", df_dropped_col)
# 删除全部是NaN的行
df_dropped_all = df.dropna(how='all')
print("删除全部是NaN的行后的数据:\n", df_dropped_all)