首页 > 编程语言 >Python爬虫-数据采集和处理

Python爬虫-数据采集和处理

时间:2024-03-21 17:33:54浏览次数:32  
标签:存储 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”。在保护敏感数据的同时尽可能的保留原有信息。
  • 掩码屏蔽。多用于账户类数据,使用掩码对账户数据中的前端、中间或者尾部进行屏蔽。例如,外卖平台通过对手机号后四位以外的数字进行掩码屏蔽来保护客户隐私。
    在这里插入图片描述

标签:存储,Python,爬虫,采集,清洗,数据,脱敏,属性
From: https://blog.csdn.net/weixin_61587867/article/details/136820307

相关文章

  • Python安全脚本之自动化子域名收集
    声明:本工具仅用于日常学习使用,禁止用于非法域名收集,否则后果由使用者承担!!!在信息收集中少不了一些脚本的辅助,本文将讲解如何编写一个自动化子域名收集脚本代码及注释如下:fromconcurrent.futuresimport*importrequestsbanner='''_________......
  • 解决[TSP旅行商]问题,请列出[4]个可以用[Python]编程的优化路径算法,展开写出这[4]个算
    TSP(旅行商问题)是一个经典的组合优化问题,其目标是找到访问所有城市并返回起点的最短可能路线。在Python中,有多种算法可以用来解决TSP问题,以下是四个常用的算法及其编程难度级别、时间复杂度和所需的库:回溯法(Backtracking)编程难度级别:中等时间复杂度:指数级,因为需要遍历所有......
  • python操作kafka
    目录一、python操作kafka1.python使用kafka生产者2.python使用kafka消费者3.使用docker中的kafka二、python操作kafka细节2.1生产者demo2.2消费者demo2.3消费者(消费群组)2.4消费者(读取目前最早可读的消息)2.5消费者(手动设置偏移量)2.6消费者(订阅多个主题)......
  • python 多进程并发:生产者+多消费者模式
    多任务场景中,为了节省大量子任务串行执行的耗时,通常采用并发方式充分利用cpu和内存来节省整体任务运行时间。对于多任务并发,常见的做法自然是抽象出功能函数,借助multiprocess类在主进程中并发出多个子进程,或者构建进程池,将任务构造好后丢入进程池中来实现并发。这种方式对于......
  • python 异常捕获、断言(assert 、finally) 与日志(loguru.logger)
    异常捕获常见的异常类型代码执行顺序从上到下依次运行的,如果出错了,后面的代码不会出错。--所以要对异常做处理。常见的异常的类型,不需要记;平时写代码的时候经常会报错,积累常见错误,排查问题。常见异常的报错的类型:NameError,IndexError,KeyError,ValueError,ZeroDivisionE......
  • python 之 垃圾回收机制(Garbage Collector,简称 GC)
    垃圾回收机制有三种,主要采用引用计数机制为主,标记-清除和分代回收机制为辅的策略。其中,标记-清除机制用来解决计数引用带来的循环引用而无法释放内存的问题,分代回收机制是为提升垃圾回收的效率。1.引用计数:Python中的每个对象都有一个引用计数,每当对象被引用时,其引用......
  • python 函数(解包、互相调用、作用域、函数的封装、内置函数:eval()、zip()、open())
    函数解包"""1、函数的注释:参数和返回值在注释里可以自动添加显示,只需手动加说明。2、函数的解包【拆包】:函数的参数要传递数据有多个值的时候,中间步骤拿到数据保存在元组或者列表或者字典里。-传递参数的时候加一个*或者**解包-一次拿到元组列表字典的......
  • 身份证ocr,python身份证识别ocr接口代码,实名认证接口
    基于文字识别技术产物的身份证识别接口现已成熟,通过手机、电脑或者摄像头终端设备拍照或者上传身份证图片即可实现身份证照片上文字的识别,从而提取到身份证信息。翔云除了提供身份证识别接口外,还完善了实名认证接口方案,搭配翔云身份证实名认证接口可谓是效率翻倍。身份证......
  • 基于Python3的数据结构与算法 - 17 哈希表
    一、哈希表哈希表是一个通过哈希函数来计算数据存储位置的数据结构,通常支持如下操作:insert(key,value):插入键值对(key,value)。get(key):如果存在键值对为key的键值对则返回其value,否则返回空值。delete(key):删除键为key的键值对。1.直接寻址法当关键字的全域U比较小......
  • 通俗易懂解释python和anaconda和pytorch以及pycharm之间的关系
    Python:Python就像是一门编程语言的工具箱,你可以把它看作是一种通用的编程语言,就像是一把多功能的工具刀。你可以使用Python来编写各种类型的程序,就像使用工具刀来制作各种不同的手工艺品一样。Anaconda:Anaconda就像是一个装有不同种类工具的大工具箱。这个工具箱里包括了Py......