数据清洗的自我理解

本文介绍了数据仓库中ODS、DWD层的数据清洗流程及侧重点,包括数据类型转换、去重、空值处理等内容,并对比了数据挖掘中数据清洗的不同之处。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据清洗

数据仓库的数据清洗

ODS层的数据清洗侧重点(ETL过程中的Transform):

ODS:Operation Data Store,业务操作数据存储,数据来源层
目的:保证与上游数据的一致性,避免数据重复或错误
流程:数据源->抽取、传输->文件格式转换、数据类型转换->加载到临时数据区->数据清洗->写入正式数据区ODS
清洗过程:

  • 常规数据:数据类型转换、数据去重、空值处理、空格去除、敏感数据加密
  • 脏数据:残缺、错误、重复、多个来源系统数据不一致,将过滤出的脏数据提交上游业务部门,决定剔除还是修复后重新抽取数据。

DWD层的数据清洗侧重点:

DWD:Data Warehouse Details,数据明细层
目的:增强数据可用性,数据仓库整体数据的规范化
流程:ods->数据清洗、计算、轻度汇总->dwd
清洗过程:

  • 剔除不可用数据:去重、去空、异常值处理、去除冗余字段
  • 数据规范化:即数值统一,结合字典表(dim)映射转换,编码(如标识符ID)、名称、boolean值统一,单位统一

DWS - Data Warehouse Service,数据服务层,也叫数据聚合层,进行高频使用维度的数据汇总,可加工成宽表,便于OLAP分析查询
ADS - Application Data Service,应用服务层,结果型数据,可用于报表展示、结果分析,一般存储于ES或导出至Mysql快速查询,或以业务接口形式提供出去

数据挖掘的数据清洗

另外就是数据挖掘,会做大量的数据清洗工作,数仓的重点是维护数据在数仓层级之间的流转,注重过程,而挖掘是结果导向的,清洗过程中会对数据做更多的修正工作,以便于更好的训练模型。
比如空值,数仓更可能将空值置为空字符串或0,而挖掘更可能将空值赋一个均值。
比如越界值,如年龄为-10或200,数仓更可能会将越界值统一处理成999这种无意义数值,而挖掘更可能处理成均值、众数值、标签值(儿童、老人)或手工赋值等。

### 关于Python数据清洗的专项练习及教程 #### 数据清洗的重要性 数据清洗是数据分析和机器学习项目的重要组成部分。通过清理不完整、错误或冗余的数据,可以提高模型性能并获得更可靠的结论。 --- #### 推荐的学习资源与实践方法 1. **官方文档** Pandas 官方文档提供了详尽的功能说明以及实际案例,适合初学者深入理解数据操作的基础功能[^3]。 2. **在线平台课程** 平台如 Coursera 和 edX 提供专门针对数据处理的课程,其中涵盖了大量基于真实世界场景的任务,帮助学员掌握数据清洗技能[^1]。 3. **书籍推荐** - 《Python for Data Analysis》 by Wes McKinney 是一本经典教材,书中详细讲解了利用 Pandas 进行高效数据管理的方法和技术。 - 另外,《Data Wrangling with Python》也是一本专注于解决日常数据整理难题的好书[^2]。 4. **实战演练** 使用公开可用的数据集来完成特定目标导向型的小项目是最好的方式之一。例如 Kaggle 上有许多免费提供给公众使用的高质量数据集合,非常适合用来测试自己的技术能力[^1]。 5. **具体实例解析** 以下是几个常见的数据清洗任务及其对应的解决方案: - **删除重复项**: ```python import pandas as pd df = pd.DataFrame({ 'A': ['foo', 'bar', 'foo', 'bar'], 'B': [1, 2, 3, 4], }) print(df.duplicated()) print(df.drop_duplicates()) ``` - **缺失值处理**: ```python df['age'] = df['age'].fillna(df['age'].mean()) # 替换数值列中的NA为均值 df.fillna(method='ffill') # 前向填充法填补空缺值 ``` - **字符串预处理**: 当遇到包含多余空白字符或者大小写混杂的情况时,可采用以下手段统一格式化输入字段: ```python df['name'] = df['name'].str.strip().str.title() ``` - **日期时间转换**: 对于存储形式各异的时间戳序列,则需调用 `pd.to_datetime()` 函数将其标准化表示出来以便后续计算需求。 ```python df['purchase_date'] = pd.to_datetime(df['purchase_date'], format='%Y-%m-%d') ``` 以上每一步骤都附带相应代码片段便于理解和模仿执行。 --- #### 总结 综上所述,无论是理论知识还是动手实操方面都有丰富的资料可供参考学习;同时鼓励大家多尝试不同类型的挑战题目从而不断提升自我水平!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值