前言
继续详细介绍缺失值处理、异常值检测、数据一致性处理。这是数据清洗的第一步,关键步骤。
上一篇因为篇幅的原因,只介绍了异常值检测,本文介绍数据一致性处理。
1、重复值检测与去重
使用df.duplicated()
和df.drop_duplicates()
方法如果对应的数据是重复的,duplicated()
会返回 True,否则返回 False。
# 检测重复行
df.duplicated()
# 检测特定列的重复值
df.duplicated(subset=['列名'])
# 删除完全重复的行
df.drop_duplicates()
# 基于特定列删除重复项,保留第一次出现的
df.drop_duplicates(subset=['name'], keep='first')
# 标记重复项
df.duplicated(subset=['name'], keep=False)
2、类型转换与数据格式统一
# 查看数据基本信息
df.dtypes
df.dtypes.unique()
df.unique()
df.dtypes.value_counts()
df.info()
# 转换整数类型
pd.to_numeric(df['列名'])
# 转换 age 为整数类型,处理未知值
pd.to_numeric(df['age'], errors='coerce')
# 转换 salary 为浮点数类型,移除逗号
df['salary'].str.replace(',', '').astype(float)
# 转换 join_date 为日期类型
pd.to_datetime(df['join_date'])
# 处理缺失值
df['age'].fillna(df['age'].mean(), inplace=True)
# 格式统一:将所有字符串转为小写
df['name'].str.lower()
3、不一致记录的标注与修正
标准化编码:统一使用相同的编码方式(如UTF-8)。
规范化值:例如,将"Street"、"St."、"St"统一为一种表示。
单位转换:确保所有数值使用相同的单位。
拼写检查:修正拼写错误
# 经常用到的函数
df.apply() #可以对每行、每列、每个值应用函数
df.replace() # 对数据进行替换
# 标准化城市名称--示例
city_mapping = {
'New York City': 'New York',
'Chcago': 'Chicago',
'San Fransisco': 'San Francisco'
}
df['city'] = df['city'].replace(city_mapping)
总结
笔者写了三篇文章介绍缺失值处理数据预处理方法大全+实战代码(一)(二)、异常值检测数据预处理方法大全+实战代码(三)、数据一致性处理。这是数据清洗的第一步,关键步骤。可以显著提高数据质量,为后续的分析和建模工作奠定坚实的基础。在实际应用中,需要根据具体的数据特点和业务需求,选择合适的方法进行数据清洗。