当前位置: 首页 > news >正文

Python爬虫-数据采集和处理

文章目录

    • 数据
      • 数据类型
    • 数据分析过程
    • 数据采集
      • 数据采集源
      • 数据采集方法
    • 数据清洗
      • 清洗数据
      • 数据集成
      • 数据转换
      • 数据脱敏

数据

《春秋左传集解》云:“事大大其绳,事小小其绳。”体现了早期人类将事情的“大小”这一性质抽象到“绳结大小”这一符号上从而产生数据的过程。
在这里插入图片描述
数据:是指对客观事物进行记录并可以鉴别的符号,是对客观事物的性质、状态以及相互关系等进行记载的物理符号或这些物理符号的组合。它是可识别的、抽象的符号。
早期数据的抽象还很朴素,随着人类文明的进步这种抽象越来越复杂,到了现代,磁盘上磁性物质磁极的排列就是经过高度抽象的符号,需要配套的设备才能读取成人类可以理解的形式。
信息:是通过数据的排列组合传递的概念或者方法

数据中的“数”包括狭义上的数字,还包括具有一定意义的文字、字母、数字符号的组合、图形、图像、视频、音频等。数据里的信息有时难以直接传递给人,需要加工之后才能变成人易于理解的信息。

数据类型

  • 状态类数据。记录了某一时间点描述对象所处的状态,对客观世界实体的性质的抽象表示。存储方式:存储快照或者SCD方式。
  • 事件类数据。经常涉及到多个对象,记录了这些对象之间的互动情况。存储方式:直接存储或按时间分区存储。
  • 混合类数据。是事件类数据的延申,所描述的事件发生过程较长,同时涉及到状态类数据和事件类型。存储方式:分离保存,使用时合并。
  • 结构化数据。结构化数据的特点是高度组织、十分整齐且具有特定的格式。可以轻松的以表格的形式进行展示,但扩展性很差。
  • 半结构化数据。是结构化数据的一种形式,也被称为自描述的结构,包含用来分隔语义元素以及对记录和字段进行分层的相关标记。对于半结构化数据来说,属性的顺序与数量都是可以变化的。
  • 非结构化数据。非结构化数据不规则或不完整,没有预定义的数据模型,无法使用数据库二维逻辑或者树结构来表现,因此收集,处理和分析非结构化数据也是一项重大挑战。

数据分析过程

(1)数据采集。传统的数据采集会有以下一些步骤:抽样、测量、编码、输入、核对。而大数据时代,各种传感器、视频录制、音频录制设备的普及,各种互联网应用对用户行为的记录,使得大量数据涌入。
(2)数据预处理。针对收集到的数据的特点,分析其可能存在的缺陷,采用适当的方法对其进行批量加工处理,得到可靠的、高质量的数据。
(3)数据存储于管理。针对数据的特点,采取有效的存储硬件与软件,实现可靠、安全、易用的数据存储。
(4)数据分析与知识发现。将预处理之后的信息进行进一步的分析,完成信息到认知的过程。从整理后的数据中学习和发现知识,形成结论。
(5)数据后处理。将数据进行可视化,提供给决策支持系统等使用方。

数据采集

数据采集使数据分析的起点,通过各种技术手段实时或者非实时的收集到据源产生的数据,并加以利用。

数据采集需要注意全面性、多维性与高效性。

数据采集源

  1. 传感器数据。传感器是一种检测装置,能感受到被测量的信息,并能将感受到的信息,按一定规律变换成为电信号或其他所需形式的信息输出,以满足信息的传输、处理、存储、显示、记录和控制等要求。
  2. 日志文件。企业的业务服务器每天都会产生大量的日志文件,用于记录针对数据源执行的各种操作。这些日志里埋藏着巨大的价值,是决策支持系统的重要数据来源。
  3. 互联网数据。互联网数据主要指互联网上的用户生成内容以及网站发布内容。这些数据可以通过相应的平台方提供的数据接口得到。如果没有数据接口,则需要采用网络爬虫技术来完成数据采集工作,需要遵循一定的爬虫协议。
  4. 企业业务系统数据。一般企业都有传统的关系型数据库来存储业务数据,这些数据库发展多年,具有高度的可靠性与成熟的数据组织模式。随着非结构化数据的快速增长,一些企业意识到了非结构化数据的价值,也会采用NoSQL数据库用于数据的存储。除了直接从业务系统数据库取得数据分析外,也可以采用构建数据仓库的模式,为企业决策提供数据源。

数据采集方法

  1. 系统日志采集
    可以分为用户行为日志、业务变更日志、系统运行日志。由于日志记录的信息详细、随时间不断累积,数据量非常大,所以这些工具均采用分布式框架,数据采集和传输速度可达到每秒数百MB。
    Hadoop的Chukwa、Cloudera的Flume、Facebook的Scribe
  2. 分布式消息订阅分发
    消息订阅分发是消息系统模式,在这种模式下,消息订阅者都可以消费发布者产生的消息。
    Kafka
  3. ETL
    ETL常用于数据仓库的构建。ETL从散落的业务数据库中抽取数据,并根据实际的商务需求对数据进行转换,再将转换后的数据加载到目标数据存储结构中。ETL的过程实际上也包含了数据预处理环节。
    Kettle、DataPipeline、Talend等
  4. 网络数据采集
    主要采用网络爬虫工具。网络爬虫(Web Crawler)是指一类能够自动化访问网络并抓取某些信息的程序,有时候也被称为“网络机器人”。它们被广泛用于互联网搜索引擎及各种网站的开发中,同时也是大数据和数据分析领域中的重要角色。爬虫可以按一定逻辑大批量采集目标页面内容,并对数据做进一步的处理。

数据清洗

整体流程:
在这里插入图片描述
数据的质量一定程度上能决定分析结果的质量,然而通过上一节的各种渠道收集到的数据,往往存在各种各样的缺陷。数据清洗就是找到数据的缺陷,并采取合适的方法对数据进行处理(修复缺陷或者直接删除),最终得到一份可用、甚至是完美的数据。
数据清洗可以采用人工清洗和自动清洗两种方式。数据清洗主要的应用场景是数据仓库构建、数据挖掘以及数据质量管理。

清洗数据

数据清洗有四种:数据缺失值处理、数据异常值处理、数据类型转换、重复值处理

  1. 数据缺失清洗
    数据缺失是常见的数据缺陷,针对这种情况有以下几种常用的处理方法。
  • (1)估算。可以通过未缺失的数据来给出缺失值的估算值,或是通过分析变量的实际含义,得到变量之间的相关性分析或者逻辑推论,利用这些信息来估计缺失值。
  • (2)整例删除。当异常值或者缺失值占比很小时,可以采用直接将整条数据直接删除的方法。
  • (3)变量删除。当某一变量缺失很多时,如果经过分析,这一变量对于所关注的问题影响有限,可以考虑将该变量数据全部删除。这样做法减少了供分析用的变量,但没有改变样本数量。
  1. 异常值的判别需要一定的经验,处理异常值是容易被忽略的一步。可以通过为每个变量设定一个合理的取值范围,为有关联的变量设定合理的相互关系来筛选异常值。
  2. 数据类型会影响后续数据分析环节代码的编写,需要在预处理时进行转换。
  3. 重复值会影响算法性能以及结论准确性,需要在数据预处理时进行重复性检验。如果存在重复值,还需要进行重复值的删除。

数据清洗的评价标注
可信性。衡量可信性的指标有:精确性、完整性、一致性、有效性、唯一性等。
可用性。衡量可用性的指标有:时间性、稳定性。

数据集成

数据集成指将多个数据源的数据结合在一起,形成统一的数据集。主要需要考虑以下几个问题。

  1. 模式集成问题。数据集成需要将各个数据源以及现实世界当中的实体正确匹配。例如,同一个实体属性在不同数据库中可能命名不同,识别出这种差异并将其统一起来是必要的。
  2. 冗余问题。某些属性可以通过其他属性的运算得到,如果这些属性存在于同一个表中,则出现了数据冗余。冗余是否去除需要根据实际数据使用需求来判断。
  3. 数值冲突检测与消除。同一实体属性在不同数据源里采用的单位、编码等可能不同。这种语义差异是数据集成需要重点检测并解决的。

数据转换

数据转换的目的是使数据适合于后续的采用的分析方法。有如下几种方式。

  1. 平滑处理。对数据进行平滑处理可以减弱数据中的噪声。常用的平滑算法有:分箱、回归和聚类等。
  2. 聚集处理。在某一维度上对数据进行汇总操作。聚集操作可以构造数据立方体,对数据进行从细粒度到粗粒度的分析。
  3. 泛化处理。用更抽象的高层次概念来取代低层次的数据对象。例如,年龄属性可以由底层次的数值抽象(映射)到高层次的“青年、中年、老年”概念。
  4. 标准化处理。将某一属性的所有属性值按一定规则缩放到一个给定的区间,通常为[0, 1]区间。常用方法有:最值标准化、均值方差标准化。
  5. 属性构造处理。通过已有数据属性之间的运算,得到新的属性,供后续分析使用。例如可以根据人口数量和GDP,计算出新的属性值——人均GDP。

数据脱敏

企业在运行过程中会将客户业务相关的各种隐私存储进数据库,这些数据具有极高的商业价值,一旦泄露,会造成企业客户资源的流失,同时也会降低客户对企业的不信任感,严重时甚至可能违反相关法律规定。因此对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护,是一个惯用的做法,称之为数据脱敏。身份证号、手机号、卡号、客户号等个人信息都需要进行数据脱敏。
脱敏原则:

  1. 保持原有数据特征。数据脱敏前后数据特征应保持不变
  2. 保持数据的一致性。数据间有一定的关联。
  3. 保持业务规则的关联性。数据的业务语义在脱敏后应保持不变
  4. 多次脱敏后数据的一致性。相同的数据可能会在不同场景要求下进行多次脱敏处理,需要确保每次脱敏后数据都可以保持一致。
    脱敏方法:
  • 数据替换。用设置的固定虚假值来替换真实值。
  • 无效化。可采取截断、加密、隐藏等使敏感数据脱敏。
  • 随机化。采用与原数据具有相同统计特征的随机数据来替换真实数据。
  • 偏移和取整。通过随机移位改变数值型数据。例如可以对时间数据“20:19”变为“20:00”。在保护敏感数据的同时尽可能的保留原有信息。
  • 掩码屏蔽。多用于账户类数据,使用掩码对账户数据中的前端、中间或者尾部进行屏蔽。例如,外卖平台通过对手机号后四位以外的数字进行掩码屏蔽来保护客户隐私。
    在这里插入图片描述

相关文章:

  • Linux初识环境变量
  • HarmonyOS4.0—自定义渐变导航栏开发教程
  • HTML静态网页成品作业(HTML+CSS)——非遗徽州木雕网页(6个页面)
  • Vue2前端权限控制实战
  • P8711 [蓝桥杯 2020 省 B1] 整除序列 存疑解决篇 Python
  • 【SpringSecurity】十三、基于Session实现授权认证
  • php 对接Pangle海外广告平台收益接口Reporting API
  • mysql之基本概念与安装
  • maven手动上传的第三方包 打包项目报错 Could not find xxx in central 解决办法
  • 从零开始写 Docker(七)---实现 mydocker commit 打包容器成镜像
  • 【C语言】指针基础知识(一)
  • Excel使用VLOOKUP函数
  • C# 使用OpenCvSharp4将Bitmap合成为MP4视频的环境
  • Android和IOS Flutter应用开发使用 Provider.of 时,可以使用 listen: false 来避免不必要的重建
  • 算法---二分查找练习-2(寻找旋转排序数组中的最小值)
  • [原]深入对比数据科学工具箱:Python和R 非结构化数据的结构化
  • 《深入 React 技术栈》
  • 30天自制操作系统-2
  • angular组件开发
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • k8s 面向应用开发者的基础命令
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • Python打包系统简单入门
  • Python代码面试必读 - Data Structures and Algorithms in Python
  • React16时代,该用什么姿势写 React ?
  • Spring Boot MyBatis配置多种数据库
  • TypeScript迭代器
  • Vue UI框架库开发介绍
  • vue和cordova项目整合打包,并实现vue调用android的相机的demo
  • 老板让我十分钟上手nx-admin
  • 前端设计模式
  • 让你的分享飞起来——极光推出社会化分享组件
  • 算法系列——算法入门之递归分而治之思想的实现
  • 温故知新之javascript面向对象
  • 一个SAP顾问在美国的这些年
  • 用mpvue开发微信小程序
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • (01)ORB-SLAM2源码无死角解析-(56) 闭环线程→计算Sim3:理论推导(1)求解s,t
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (Repost) Getting Genode with TrustZone on the i.MX
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (过滤器)Filter和(监听器)listener
  • (三)uboot源码分析
  • (三维重建学习)已有位姿放入colmap和3D Gaussian Splatting训练
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • (原創) 如何使用ISO C++讀寫BMP圖檔? (C/C++) (Image Processing)
  • .NET MVC第五章、模型绑定获取表单数据
  • .net on S60 ---- Net60 1.1发布 支持VS2008以及新的特性
  • .NET 程序如何获取图片的宽高(框架自带多种方法的不同性能)
  • .net 前台table如何加一列下拉框_如何用Word编辑参考文献
  • .Net程序帮助文档制作
  • :O)修改linux硬件时间
  • @Autowired自动装配
  • []FET-430SIM508 研究日志 11.3.31