在Python中处理空值(缺失值)的常见方法包括使用Pandas库的`fillna()`函数,以及使用其他第三方库如`impyute`和`fancyimpute`。以下是使用Pandas进行空值填充的一些示例:
使用Pandas的`fillna()`函数
import pandas as pd
import numpy as np
创建一个带空值的数据
data = {'成绩': [85, np.nan, 92, np.nan, 78, 88]}
df = pd.DataFrame(data)
用平均值填充
df['成绩_均值填充'] = df['成绩'].fillna(df['成绩'].mean())
用固定值填充
df['成绩_固定值填充'] = df['成绩'].fillna(0)
print(df)
使用`dropna()`删除缺失值
import pandas as pd
import numpy as np
创建测试数据
data = {'姓名': ['小明', '小红', '小张', '小李', '小王'], '语文': [85, 92, np.nan, 78, 88], '数学': [92, 88, 76, np.nan, 85]}
df = pd.DataFrame(data)
删除包含空值的行
df_clean = df.dropna()
print(df_clean)
使用`impyute`和`fancyimpute`进行空值填充
import pandas as pd
import numpy as np
from impyute.impute import SimpleImputer
from fancyimpute import KNNImputer
创建一个带空值的数据
data = {'A': [1, 2, None, 4, 5], 'B': [2, 4, None, 3, 2]}
df = pd.DataFrame(data)
使用SimpleImputer填充空值
imputer = SimpleImputer(strategy='mean')
df_filled = imputer.fit_transform(df)
df_filled = pd.DataFrame(df_filled, columns=df.columns)
使用KNNImputer填充空值
imputer = KNNImputer(n_neighbors=2)
df_filled = imputer.fit_transform(df)
df_filled = pd.DataFrame(df_filled, columns=df.columns)
print(df_filled)
使用`fillna()`的其他方法
使用指定值填充:
df['成绩'] = df['成绩'].fillna(0) 用0填充空值
使用前一个值填充(前向填充):
df['成绩'] = df['成绩'].fillna(method='ffill')
使用后一个值填充(后向填充):
df['成绩'] = df['成绩'].fillna(method='bfill')
使用插值法填充:
df['成绩'] = df['成绩'].interpolate()
选择填充方法时,应根据实际的数据场景和需求来决定,例如在处理时间序列数据时,使用前一个值填充可能更合理。