主页 > 游戏开发  > 

数据分析--数据清洗

数据分析--数据清洗
一、数据清洗的重要性:数据质量决定分析成败 1.1 真实案例警示 电商平台事故:2019年某电商大促期间,因价格数据未清洗导致错误标价,产生3000万元损失医疗数据分析:未清洗的异常血压值(如300mmHg)导致疾病预测模型准确率下降27%金融风控失效:重复借贷申请未去重,造成1.2亿元坏账 1.2 数据质量问题

二、数据分析全流程与清洗定位 2.1 六步分析法(清洗为核心) 需求定义:明确业务目标(如用户流失分析)数据采集:数据库查询/API获取/日志收集数据清洗:本阶段耗时占比达60-70%探索分析:统计描述与可视化建模分析:构建预测模型报告输出:制作可视化看板 2.2 清洗流程标准化

企业级处理流程

三、Python数据清洗核心函数详解 3.1 Pandas清洗工具箱 # 缺失值处理 df.dropna(subset=['关键字段']) # 删除关键字段缺失行 df['年龄'].fillna(df['年龄'].median(), inplace=True) # 中位数填充 # 重复值处理 df.drop_duplicates(subset=['订单ID'], keep='last') # 保留最新记录 # 异常值处理 df = df[(df['销售额'] > 0) & (df['销售额'] < 1e6)] # 合理范围过滤 # 格式转换 df['日期'] = pd.to_datetime(df['日期'], errors='coerce') # 强制日期格式 3.2 高级清洗技巧 # 跨字段逻辑校验 df = df[~(df['会员等级'] == '黄金会员') & (df['累计消费'] < 5000)] # 剔除矛盾数据 # 文本清洗 df['地址'] = df['地址'].str.replace(r'\s+', '') # 去除空白字符 df['手机号'] = df['手机号'].str.extract(r'(\d{11})')[0] # 提取有效号码 # 分类型数据处理 df['年龄段'] = pd.cut(df['年龄'], bins=[0,18,30,50,100], labels=['未成年','青年','中年','老年']) 四、电商数据清洗实战案例 4.1 原始数据样例 id: raw_data_sample name: 原始数据示例 type: code.python content: |- raw_data = [ {"order_id": "A1001", "user_id": 101, "amount": 150.0, "date": "2023-02-30"}, {"order_id": "A1001", "user_id": 101, "amount": -150.0, "date": "2023/02/28"}, {"order_id": "A1002", "user_id": None, "amount": 300.0, "date": "2023-03-01"}, {"order_id": "A1003", "user_id": 103, "amount": "二百元", "date": "2023-03-02"} ] 4.2 分步清洗演示 # 步骤1:加载数据 import pandas as pd df = pd.DataFrame(raw_data) # 步骤2:处理重复订单 print(f"清洗前数据量:{len(df)}") df = df.drop_duplicates(subset=['order_id'], keep='last') # 步骤3:修复日期格式 df['date'] = pd.to_datetime(df['date'], errors='coerce') df = df[df['date'].notnull()] # 步骤4:校验金额字段 df['amount'] = pd.to_numeric(df['amount'], errors='coerce') df = df[(df['amount'] > 0) & (df['amount'] < 10000)] # 步骤5:处理用户缺失 df['user_id'] = df['user_id'].fillna(0).astype(int) print(f"清洗后有效数据:{len(df)}") print(df) 4.3 清洗效果对比

五、数据清洗最佳实践 5.1 标准化检查清单 完整性检查:关键字段缺失率<5%一致性验证:时间顺序逻辑正确格式标准化:统一日期/数值格式业务规则校验:符合业务逻辑约束 5.2 常见错误预防 不要直接修改原始数据:始终保留原始副本建立数据血缘追踪:记录每次清洗操作自动化测试案例:验证清洗规则的准确性 # 单元测试示例 def test_phone_format(): test_data = pd.Series(['138-1234-5678', 'abc123']) cleaned = test_data.str.replace(r'\D', '') assert cleaned[0] == '13812345678' assert pd.isna(cleaned[1])

工具推荐:

数据质量检测库:Great Expectations自动化清洗框架:PySpark可视化工具:Dataiku

通过系统化的数据清洗,可使分析结果可靠性提升40%以上。记住:垃圾数据进,垃圾结论出!清洗是数据价值挖掘的第一道防线。


若教眼底无离恨,不信人间有白头。 —辛弃疾

标签:

数据分析--数据清洗由讯客互联游戏开发栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“数据分析--数据清洗