数据工程流程

news2024/11/27 12:41:34

** 数据工程流程图**

API调用 / 爬取数据
处理缺失值 / 异常值
生成统计报告 / 可视化
标注任务与审核
特征工程 / 数据增强
数据采集
数据清洗
数据分析
人工标注
数据构造
输出数据集

各步骤详解与具体实现

1. 数据采集

数据采集是获取数据的第一步。以下是常见的采集方式及其实现示例:

具体实现:
  1. 通过 API 采集数据

    • 示例:从公开 API 获取天气数据。
    import requests
    
    api_url = "http://api.weatherapi.com/v1/current.json"
    params = {
        "key": "your_api_key",
        "q": "London"
    }
    response = requests.get(api_url, params=params)
    if response.status_code == 200:
        data = response.json()
        print(data)
    else:
        print("Failed to fetch data")
    
  2. 爬取网页数据

    • 示例:使用 BeautifulSoup 抓取新闻标题。
    import requests
    from bs4 import BeautifulSoup
    
    url = "https://news.ycombinator.com/"
    response = requests.get(url)
    soup = BeautifulSoup(response.text, 'html.parser')
    
    titles = [title.get_text() for title in soup.find_all('a', class_='storylink')]
    print(titles)
    
注意事项:
  • 确保数据来源合法,遵守隐私和数据采集政策。
  • 针对大规模数据采集,考虑使用并发工具如 aiohttpscrapy

2. 数据清洗

数据清洗是数据工程中的关键环节,用于提升数据质量,便于后续分析。

具体实现:
  1. 去重与填充缺失值

    import pandas as pd
    
    data = pd.DataFrame({
        'Name': ['Alice', 'Bob', 'Alice', None],
        'Age': [25, 30, 25, 29],
        'Score': [90, None, 90, 85]
    })
    
    # 去除重复值
    data = data.drop_duplicates()
    
    # 填充缺失值
    data['Score'] = data['Score'].fillna(data['Score'].mean())
    data['Name'] = data['Name'].fillna("Unknown")
    
    print(data)
    
  2. 格式转换与异常值处理

    # 转换日期格式
    data['Date'] = pd.to_datetime(data['Date'], errors='coerce')
    
    # 检测异常值
    z_scores = (data['Score'] - data['Score'].mean()) / data['Score'].std()
    data = data[z_scores.abs() < 3]  # 去除 Z-score 超过 3 的异常值
    
注意事项:
  • 缺失值的填充策略应根据业务需求选择(如均值、插值、特定值填充)。
  • 异常值检测可以使用统计方法(如箱型图或 Z-score)。

3. 数据分析

数据分析包括探索性数据分析(EDA)和统计建模,目的是挖掘数据特征,为决策提供依据。

具体实现:
  1. 生成数据统计报告

    import pandas as pd
    
    data = pd.read_csv('data.csv')
    print(data.describe())  # 生成统计摘要
    
  2. 可视化分析

    • 示例:使用 Seaborn 绘制数据分布图。
    import seaborn as sns
    import matplotlib.pyplot as plt
    
    sns.histplot(data['Score'], bins=30, kde=True)
    plt.show()
    
  3. 相关性分析

    correlation = data.corr()
    sns.heatmap(correlation, annot=True)
    plt.show()
    
注意事项:
  • 分析应紧密围绕业务目标,避免冗余或无关分析。
  • 数据可视化可以提高结果的直观性。

4. 人工标注

人工标注用于生成有监督学习所需的数据集。高质量标注是构建模型的重要基础。

具体实现:
  1. 使用 Label Studio 配置标注任务

    • 安装与启动:
      pip install label-studio
      label-studio start
      
  2. 示例:文本分类标注

    • 在 Label Studio 中上传数据集,设置分类任务(如情感分类)。
注意事项:
  • 确保标注人员对任务有清晰的理解,提供标注标准。
  • 对复杂任务,建议进行多轮校对以提高标注一致性。

5. 数据构造

数据构造包括特征工程、数据增强和数据集划分。

具体实现:
  1. 数据划分

    from sklearn.model_selection import train_test_split
    
    train, test = train_test_split(data, test_size=0.2, random_state=42)
    print("训练集大小:", len(train))
    print("测试集大小:", len(test))
    
  2. 数据增强

    • 示例:图像翻转与旋转。
    from torchvision import transforms
    
    transform = transforms.Compose([
        transforms.RandomHorizontalFlip(),
        transforms.RandomRotation(10)
    ])
    augmented_image = transform(image)
    
  3. 特征工程

    • 示例:提取日期特征。
    data['Year'] = data['Date'].dt.year
    data['Month'] = data['Date'].dt.month
    
注意事项:
  • 数据增强适用于深度学习任务,需避免引入噪声。
  • 特征构造应基于业务逻辑,确保对模型有正向贡献。

流程关键点总结

步骤核心任务工具与技术
数据采集从数据源获取原始数据requestsScrapy
数据清洗提高数据质量,处理缺失与异常值PandasNumpy
数据分析挖掘数据特征,生成统计与可视化SeabornMatplotlib
人工标注标注数据,为模型提供训练集Label Studio
数据构造特征工程、数据增强、划分数据集sklearntorchvision

以上流程不仅涵盖了每个阶段的理论与实践,还为具体实现提供了代码示例,便于理解和应用!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2248416.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

自动泊车“哐哐撞大墙”,小米SU7智驾功能bug缠身?

文/王俣祺 导语&#xff1a;小米SU7&#xff0c;自带热度与科技光环的“流量神车”&#xff0c;近日却以一种极为“狼狈”的方式闯入大众视野。多达70余辆小米SU7陷入“泊车魔咒”&#xff0c;瞬间在网络上炸开了锅。从“科技控”到“惹祸精”的背后&#xff0c;究竟藏着怎样的…

优维HAO案例:全球TOP15汽车零件供应商「IT运维自动化」创新工程

撰文&#xff1a;鹿小U / 制图&#xff1a;脾气超好 又是一家很厉害的客户。 YADT是全(hu)球(zhēn)领(ji)先(sh)的汽车座椅供应商&#xff0c;拥有从汽车座椅零部件到整椅的完整生产制造能力&#xff0c;为中国几乎所有的汽车制造商提供汽车整椅产品和服务。 YADT在国内拥…

Linux宝塔部署wordpress网站更换服务器IP后无法访问管理后台和打开网站页面显示错乱

一、背景&#xff1a; wordpress网站搬家&#xff0c;更换服务器IP后&#xff0c;如果没有域名时&#xff0c;使用服务器IP地址无法访问管理后台和打开网站页面显示错乱。 二、解决方法如下&#xff1a; 1.wordpress搬家后&#xff0c;在新服务器上&#xff0c;新建站点时&am…

MyBatis框架-动态SQL-XML中的常用标签+特殊字符在XML中的显示

一、if标签、where标签、trim标签、choose标签、set标签、foreach标签 1、问题引入&#xff1a;where关键字和and关键字在动态SQL里面应该如何添加&#xff1f; &#xff08;1&#xff09;if标签&#xff1a; test属性的值是判断条件 if标签里面的内容是条件成立时添加到SQ…

EXTI配置流程 含中断延时消抖点亮小灯

如图可知&#xff0c;配置流程分成以下一个部分 ①使能GPIO时钟 __HAL_RCC_GPIOA_CLK_ENABLE();// 打开时钟 ②初始化利用 HAL_GPIO_Init 一步到位&#xff0c;可以初始化外设GPIO的一切 4个参数 &#xff08;引脚 Pull 这里选择的模式是从下面这几个里面选 速度&#x…

数据库系列之GaussDB数据库高可用能力测试验证

数据库的高可用能力是数据库的基本能力&#xff0c;可靠性的设计和机制能够保证数据库节点异常时能够正常切换、减少业务的影响范围和时间&#xff0c;保证业务的可用性和连续性。本文主要介绍GaussDB数据库的高可用能力测试验证情况&#xff0c;通过模拟故障场景来验证GaussDB…

Android BottomNavigationView 底部导航栏使用详解

一、BottomNavigationView简介 BottomNavigationView是官方提供可以实现底部导航的组件&#xff0c;最多支持5个item&#xff0c;主要用于功能模块间的切换&#xff0c;默认会包含动画效果。 官方介绍地址&#xff1a;BottomNavigationView 二、使用BottomNavigationView a…

IIT开发自适应协作界面,通过Xsens动作捕捉系统实现安全人机交互

意大利理工学院(IIT)的研究人员正在利用自适应界面转变人机协作&#xff0c;实现实时机器人调整和安全、无缝的交互。 本文要点: l 协作的实时适应&#xff1a;IIT的研究员西林图纳和厄兹达马尔开发了一种自适应协作界面(ACI)&#xff0c;允许机器人根据人类的运动意图实时调…

一学就废|Python基础碎片,格式化F-string

Python 3.6 中引入了 f-string语法&#xff0c;提供了一种简洁直观的方法来将表达式和变量直接嵌入到字符串中进行字符串格式化&#xff0c;f -string背后的想法是使字符串插值更简单。 要创建 f -string&#xff0c;在字符串前加上字母 “f”即可&#xff0c;与字符串本身的格…

SVG无功补偿装置MATLAB仿真模型

“电气仔推送”获得资料&#xff08;专享优惠&#xff09; 模型简介 SVG&#xff08;又称ASVG 或STATCOM&#xff09;是Static Var Generator 的缩写&#xff0c;叫做静止无功发生器。也是做无功补偿的&#xff0c;比SVC 更加先进。其基本原理是将自换相桥式电路通过电抗器或…

MVC、EL、JSTL

1.MVC设计模式 三层&#xff1a; MVC&#xff1a; M&#xff08;Model&#xff09;模型&#xff1a;负责业务逻辑处理&#xff0c;数据库访问。 V&#xff08;View&#xff09;视图&#xff1a;负责与用户交互。 C&#xff08;Controller&#xff09;控制器&#xff1a;负责流程…

Web开发技术栈选择指南

互联网时代的蓬勃发展&#xff0c;让越来越多人投身软件开发领域。面对前端和后端的选择&#xff0c;很多初学者往往陷入迷茫。让我们一起深入了解这两个领域的特点&#xff0c;帮助你做出最适合自己的选择。 在互联网发展的早期&#xff0c;前端开发主要负责页面布局和简单的…

太通透了,Android 流程分析 蓝牙enable流程(应用层/Framework/Service层)

零. 前言 由于Bluedroid的介绍文档有限&#xff0c;以及对Android的一些基本的知识需要了(Android 四大组件/AIDL/Framework/Binder机制/JNI/HIDL等)&#xff0c;加上需要掌握的语言包括Java/C/C等&#xff0c;加上网络上其实没有一个完整的介绍Bluedroid系列的文档&#xff0…

R语言绘图过程中遇到图例的图块中出现字符“a“的解决方法

R语言绘图过程中遇到图例的图块中出现字符的解决方法 因为我遇到这个问题的时候没在网上找到合适的方法&#xff0c;找到个需要付费的&#xff0c;算了。也许是因为问的方式不同&#xff0c;问了半天AI也回答出来&#xff0c;莫名有些烦躁&#xff0c;打算对代码做个分析&…

【C语言】字符串左旋的三种解题方法详细分析

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C语言 文章目录 &#x1f4af;前言&#x1f4af;题目描述&#x1f4af;方法一&#xff1a;逐字符移动法&#x1f4af;方法二&#xff1a;使用辅助空间法&#x1f4af;方法三&#xff1a;三次反转法&#x1f4af;方法对…

【346】Postgres内核 Startup Process 通过 signal 与 postmaster 交互实现 (5)

1. Startup Process 进程 postmaster 初始化过程中, 在进入 ServerLoop() 函数之前,会先通过调用 StartChildProcess() 函数来开启辅助进程,这些进程的目的主要用来完成数据库的 XLOG 相关处理。 如: 核实 pg_wal 和 pg_wal/archive_status 文件是否存在Postgres先前是否发…

大数据面试SQL题-笔记02【查询、连接、聚合函数】

大数据面试SQL题复习思路一网打尽&#xff01;(文档见评论区)_哔哩哔哩_bilibiliHive SQL 大厂必考常用窗口函数及相关面试题 大数据面试SQL题-笔记01【运算符、条件查询、语法顺序、表连接】大数据面试SQL题-笔记02【查询、连接、聚合函数】​​​​​​​ 目录 01、查询 01…

【Python中while循环】

一、深拷贝、浅拷贝 1、需求 1&#xff09;拷贝原列表产生一个新列表 2&#xff09;想让两个列表完全独立开&#xff08;针对改操作&#xff0c;读的操作不改变&#xff09; 要满足上述的条件&#xff0c;只能使用深拷贝 2、如何拷贝列表 1&#xff09;直接赋值 # 定义一个…

51单片机从入门到精通:理论与实践指南入门篇(二)

续51单片机从入门到精通&#xff1a;理论与实践指南&#xff08;一&#xff09;https://blog.csdn.net/speaking_me/article/details/144067372 第一篇总体给大家在&#xff08;全局&#xff09;总体上讲解了一下51单片机&#xff0c;那么接下来几天结束详细讲解&#xff0c;从…

【pyspark学习从入门到精通20】机器学习库_3

目录 使用 ML 预测婴儿生存几率 加载数据 创建转换器 创建估计器 创建管道 拟合模型 使用 ML 预测婴儿生存几率 在这一部分&#xff0c;我们将使用前一章中的数据集的一部分来介绍 PySpark ML 的概念。 在这一部分&#xff0c;我们将再次尝试预测婴儿的生存几率。 加载…