学习了数据工程的基本要素后,接下来的合理步骤就是应用这些知识。构建一个个人项目是巩固理解并向潜在雇主或合作者表明能力的好方法。在这个阶段,无需感到压力去构建一个庞大或过于复杂的项目。目标是以亲自动手的方式实践所学的原理。一个文档齐全、功能完善的小规模项目,远比一个未完成的复杂项目更有价值。
作品集项目提供一个将不同数据工程主题融会贯通的机会。这些主题包括:识别数据源、理解数据类型、选择存储、实现基本的ETL或ELT流程、执行简单的转换,以及使用SQL和Git等工具。通过构建此类项目,您可以巩固您的实践技能并体现您的能力。
为项目寻找数据
第一步通常是寻找有趣的数据来处理。幸运的是,有大量公开可用的数据。以下是一些可以查看的地方:
- 政府开放数据门户: 许多城市、州和国家发布各种主题的数据(例如,交通、公共卫生、金融)。例子包括data.gov(美国)、data.gov.uk(英国)以及当地城市门户。
- Kaggle数据集: Kaggle提供各种各样的数据集,通常经过清理并可用于分析或机器学习 (machine learning),但许多也适合练习基本数据工程任务。
- 公共API: 许多网络服务提供应用程序编程接口(API),允许您通过编程方式获取数据。例子包括天气API(OpenWeatherMap)、金融数据API(Alpha Vantage)或社交媒体API(请查看其服务条款)。
- 学术仓库: 像UCI机器学习仓库这样的来源经常存放研究中使用的数据集。
选择数据时,请考虑:
- 兴趣: 选择一个您觉得有趣的主题。这会使工作更愉快。
- 格式: 寻找CSV、JSON等常见格式,或通过API访问的数据。
- 大小: 从合理大小的数据集(兆字节,而非太字节)开始,以避免不必要的架构复杂性。
"* 质量: 做好数据清洗的准备。数据很少是完美的。"
初学者项目构思
让我们概述一些符合本课程级别1范围的项目构思。
1. 公共数据的简单ETL流程
- 目标: 从源中提取数据,进行少量清理,并将其加载到结构化格式中。
- 步骤:
- 提取: 选择一个公共数据集(例如,包含城市公园信息的CSV文件,或来自简单公共API如随机用户生成器的数据)。编写一个脚本(或许使用Python)来获取或读取这些数据。
- 转换: 执行基本清理。这可能包括:
- 删除重复记录。
- 处理缺失值(例如,用默认值填充或删除记录)。
- 规范日期格式。
- 只选择相关列。
- 加载: 将清理后的数据加载到一个简单的关系数据库表中(SQLite非常适合本地开发,如果您有权限,也可以使用PostgreSQL/MySQL)。首先为您的表定义一个基本架构。
- 工具: Python(API使用
requests,转换使用pandas)、SQL(用于定义表和可能稍后查询)、SQLite/PostgreSQL。
一个图表,说明了简单ETL流程项目构思的基本流程。
2. 公共API数据聚合器
- 目标: 定期从公共API获取数据并随时间存储。
- 步骤:
- 选择API: 寻找一个简单的API(例如,城市当前天气、加密货币价格、GitHub仓库统计)。
- 获取: 编写一个脚本,调用API并获取所需数据(通常是JSON格式)。
- 存储: 存储获取到的数据。您可以将其追加到JSON文件、CSV文件,或作为新行插入到数据库表中(记得包含时间戳!)。
- 调度(可选,简单): 如果您觉得可以,可以使用操作系统的调度器(如Linux/macOS上的
cron或Windows上的任务计划程序)来自动运行您的获取脚本(例如,每小时一次或每天一次)。初期请保持简单。
- 分析: 编写一些基本的SQL查询,分析您随时间收集的数据(例如,每天平均温度、价格变化)。
- 工具: Python(
requests、json、csv、sqlite3)、SQL、操作系统调度器(可选)。
3. 小型数据仓库加载模拟
- 目标: 通过将数据加载到简单的星型架构中,练习为分析查询构建数据结构。
- 步骤:
- 查找/创建数据: 您可以使用前面例子中的数据,或者找到一个自然符合事实/维度模型的数据集(例如,包含产品和日期信息的销售数据)。如果需要,可以生成一些简单的模拟数据。
- 设计架构: 定义一个简单的星型架构,包含一个事实表(包含度量和外键)和几个维度表(包含描述性属性)。例如,一个
sales_fact表以及dim_product和dim_date表。
- 转换: 准备您的源数据以适应架构。这可能涉及查找维度键或为事实执行计算。
- 加载: 编写脚本,先将数据加载到维度表,然后加载到事实表,确保关系得以保持。
- 工具: Python(
pandas)、SQL(用于DDL和DML)、SQLite/PostgreSQL。
项目结构
即使是简单的项目,良好的结构也有所帮助:
- 版本控制: 从一开始就使用Git。创建一个仓库(在GitHub、GitLab等),并定期提交您的更改。这可以记录您的进度,并且是一项基本技能。
- 目录结构: 有逻辑地组织代码(例如,为脚本、数据、SQL定义设置单独的文件夹)。
- README文件: 包含一个
README.md文件,说明项目功能、如何设置以及如何运行。记录数据源和任何假设。
- 代码清晰度: 编写清晰易懂的代码,并在必要时添加注释。即使现在只有您一个人在处理,好的习惯也要趁早养成。
侧重基本内容
请记住,您的第一个作品集项目的主要目标是应用和巩固本课程所学的基础知识。侧重于表明您理解数据流程、基本转换、不同存储方法以及SQL和Git等标准工具的使用。这关乎的是过程和学习体验。暂时无需担心使用最先进的云服务或分布式处理框架。从简单开始,使其正常运行,做好文档,您就将拥有作品集中的一个有价值的部分。