数据清洗是数据预处理过程中的一个重要步骤,它涉及到识别和纠正(或去除)数据集中的错误或不一致。以下是一些使用 pandas 进行数据清洗的核心代码示例:
1、删除重复数据:
import pandas as pd
# 创建一个包含重复数据的DataFrame
df = pd.DataFrame({
'A': [1, 2, 2, 3],
'B': ['a', 'b', 'b', 'c']
})
# 删除重复数据
df_unique = df.drop_duplicates()
2、填充缺失值:
# 填充缺失值为0
df_filled = df.fillna(0)
# 使用前一个值填充缺失值
df_filled = df.fillna(method='ffill')
# 使用后一个值填充缺失值
df_filled = df.fillna(method='bfill')
# 使用特定的值填充缺失值
df_filled = df.fillna(value=5)
3、删除含有缺失值的行:
# 删除含有缺失值的行
df_dropped = df.dropna()
# 指定删除含有多少个及以上缺失值的行
df_dropped = df.dropna(thresh=2)
4、数据类型转换:
# 将列转换为字符串类型
df['column'] = df['column'].astype('str')
# 将列转换为整数类型
df['column'] = df['column'].astype('int')
# 将列转换为浮点数类型
df['column'] = df['column'].astype('float')
5、过滤和选择数据:
# 选择某一列
df_column = df['column']
# 选择满足条件的行
df_filtered = df[df['column'] > 0]
# 使用布尔索引进行复杂过滤
df_complex = df[(df['column1'] > 0) & (df['column2'] == 'value')]
6、异常值处理:
# 计算 z-score
z_scores = scipy.stats.zscore(df['column'])
# 去除 z-score 绝对值大于 3 的异常值
df_cleaned = df[(z_scores > 3).any(axis=1)]
# 使用 IQR 去除异常值
Q1 = df['column'].quantile(0.25)
Q3 = df['column'].quantile(0.75)
IQR = Q3 - Q1
df_cleaned = df[~((df['column'] < (Q1 - 1.5 * IQR)) |(df['column'] > (Q3 + 1.5 * IQR)))]
7、重采样和插值:
# 对时间序列数据进行重采样
df_resampled = df.resample('M').mean()
# 对缺失值进行线性插值
df_interpolated = df.interpolate(method='linear')
请注意,这些代码示例仅用于说明 pandas 在数据清洗方面的核心功能。在实际应用中,数据清洗的过程可能需要更复杂的逻辑和多种方法的组合,以确保数据的质量和准确性。