程序员如何做「数据处理」:不是洗数据,是建管道
数据处理是程序员的重要技能之一。
从原始数据到可用数据,需要经过提取、清洗、转换、加载的过程。
一、数据处理的类型
1. ETL(Extract-Transform-Load)
从源系统抽取数据,转换后加载到目标系统。
适合批量数据处理。
2. 流式处理
实时处理数据流,适合低延迟场景。
Kafka + Flink/Spark Streaming。
3. 批处理
定期处理大量数据,适合不紧急的分析任务。
Spark、Hive。
二、数据清洗
1. 缺失值处理
- 删除:缺失太多则删除字段或记录
- 填充:用均值、中位数、众数填充
- 标记:保留缺失标记作为特征
2. 异常值处理
- 统计方法:3σ原则、IQR
- 机器学习方法:Isolation Forest
- 业务判断:是否符合业务逻辑
3. 数据格式标准化
- 日期格式统一
- 字段命名统一
- 单位统一
三、数据转换
1. 特征工程
- 数值特征:归一化、标准化
- 类别特征:One-Hot、Label Encoding
- 时间特征:提取年/月/日/星期
2. 数据聚合
- 按维度聚合
- 窗口函数
- 分组统计
3. 数据关联
- Join:内连接、左连接、全连接
- Union:纵向合并
- Lookup:维度表关联
四、数据验证
1. 数据质量检查
- 完整性:是否有缺失
- 一致性:数据是否矛盾
- 准确性:数据是否正确
- 时效性:数据是否过期
2. 规则校验
- 业务规则:单量不能为负
- 数据范围:年龄 0-150
- 格式校验:手机号格式
五、常用工具
1. Python
- Pandas:数据处理
- NumPy:数值计算
- Dask:大规模数据处理
2. SQL
- Hive SQL
- Spark SQL
- Presto
3. 大数据
- Spark
- Flink
- Airflow(调度)
六、一句话总结
数据处理 = ETL + 数据清洗 + 数据转换 + 数据验证,工具(Python/SQL/Spark),核心是把原始数据变成可用数据。