Python中数据清洗报错的排查与修复
在数据分析和机器学习项目中,数据清洗是确保模型准确性的关键步骤。Python的Pandas和NumPy库提供了强大的工具,但开发者常遇到数据类型错误、缺失值处理不当、异常值识别困难等问题。本文基于CSDN技术社区的实战案例,系统梳理数据清洗中的常见错误及解决方案,提供可复用的代码模板和最佳实践。
一、核心报错场景与解决方案
1. 数据类型错误(如字符串误识别为数值)
典型场景:
- 数值列包含非数字字符(如逗号、货币符号)
- 布尔值被错误识别为字符串
- 时间列未转换为日期时间格式
解决方案:
方案1:强制类型转换与错误处理
import pandas as pd
import numpy as np
# 示例数据
data = {
'price': ['$1,200', '1500', 'N/A', '2,300']}
df = pd.DataFrame(data)
# 清洗步骤
df['price'] = df['price'].replace('N/A', np.nan) # 替换缺失值标记
df['price'] = df['price'].str.replace('[\$,]', '', regex=True) # 移除符号
df['price'] = pd.to_numeric(df['price'], errors='coerce') # 转换为数值
print(df.dtypes) # 输出: price float64
方案2:时间列标准化
# 示例数据
time_data = {
'date': ['2024-12-25', '25/12/2024', 'Dec 25, 2024']}
df_time = pd.DataFrame(time_data)
# 尝试多种格式解析
date_formats = ['%Y-%m-%d', '%d/%m/%Y', '%b %d, %Y']
for fmt in date_formats:
df_time['parsed_date'] = pd.to_datetime(df_time['date'