Python爬虫基础——数据清洗

embedded/2025/1/12 0:20:37/

主要内容:对采集到的原始数据中的缺失值、重复值、异常值或乱码,进行处理。

1、异常值的处理

1.1 读取数据

1.2处理异常值

1.2.1方法一、将异常值替换为控制,然后删除空值。

1.2.2方法二、将异常值替换为空值后继续宁数据插补

2、乱码的处理

2.1方法一

        如果该网页的编码方式为GBK,使用get()函数获取到响应对象后,就可以通过对响应对象的encoding属性赋值,为响应对象指定编码格式。

2.2方法二

        通过响应对象的apparent_encoding属性获取网页源码中书写的编码格式信息,这样就不需要通过开发者工具查看<meta>标签的编码格式信息。

还有一种常见乱码是以“\u”开头的十六进制字符串,需要通过编码转化的方式来解码。
python">##############################
##作者:白雪公主的后妈
##时间:2024年1月7日
##主题:Python爬虫基础——数据清洗
##主要内容:对采集到的原始数据中的缺失值、重复值、异常值或乱码,进行处理
##############################
#1、异常值的处理
#1.1 读取数据
import pandas as pd
data = pd.read_excel('E:\\python\\Python_Code\\Excel\\text.xlsx')
print(data)
'''
运行结果:编号   产品  成本价(元/个)  销售价(元/个)  数量(个)  成本(元)  收入(元)  利润(元)    测试数
0   a001   背包        16        65     60    960   3900   2904     10
1   a002   钱包        90       187     50   4500   9350   4850      9
2   a003   背包        16        65     23    368   1495   1127      9
3   a004  手提包        36       147     26    936   3822   2886      8
4   a005   钱包        90       187     78   7020  14586   7566  12132
5   a006  单肩包        58       124     63   3654   7812   4158      5
6   a007  单肩包        58       124     58   3364   7192   3828     11
7   a001   背包        16        65     60    960   3900   2904     12
8   a002   钱包        90       187     50   4500   9350   4850     23
9   a003   背包        16        65     23    368   1495   1127     77
10  a004  手提包        36       147     26    936   3822   2886    201
11  a005   钱包        90       187     78   7020  14586   7566     11
12  a006  单肩包        58       124     63   3654   7812   4158      9
13  a007  单肩包        58       124     58   3364   7192   3828      8
'''
#1.2处理异常值       在测试数列中可以看到个别数差距很大,大部分价格在5~23之间处理异常值有两种方法
#方法一、将异常值替换为控制,然后删除空值。
# data["测试数"][data["测试数"]>23]=None            #将“测试数”列中大于23的替换为空值
# data.loc[data["测试数"] > 23, "测试数"] = None
# print(data.dropna())                             #删除空值所在的行
'''
运行结果:编号   产品  成本价(元/个)  销售价(元/个)  数量(个)  成本(元)  收入(元)  利润(元)   测试数
0   a001   背包        16        65     60    960   3900   2904  10.0
1   a002   钱包        90       187     50   4500   9350   4850   9.0
2   a003   背包        16        65     23    368   1495   1127   9.0
3   a004  手提包        36       147     26    936   3822   2886   8.0
5   a006  单肩包        58       124     63   3654   7812   4158   5.0
6   a007  单肩包        58       124     58   3364   7192   3828  11.0
7   a001   背包        16        65     60    960   3900   2904  12.0
8   a002   钱包        90       187     50   4500   9350   4850  23.0
11  a005   钱包        90       187     78   7020  14586   7566  11.0
12  a006  单肩包        58       124     63   3654   7812   4158   9.0
13  a007  单肩包        58       124     58   3364   7192   3828   8.0
'''
#方法二、将异常值替换为空值后继续宁数据插补
data.loc[data["测试数"] > 23, "测试数"] = None
print(data.fillna(data["测试数"].mean()))                             #对空值所在的位置进行插补#2、乱码的处理
#2.1方法一
'''
如果该网页的编码方式为GBK,使用get()函数获取到响应对象后,就可以通过对响应对象的encoding属性赋值,为响应对象指定编码格式
'''
#response.encoding="gbk"
#这样无论响应头中是否包含编码格式信息,响应对象的text属性都能正确的解码
#2.2方法二
'''
通过响应对象的apparent_encoding属性获取网页源码中书写的编码格式信息,这样就不需要通过开发者工具查看<meta>标签的编码格式信息。
'''
# response.encoding=response.apparent_encoding
#还有一种常见乱码是以“\u”开头的十六进制字符串,需要通过编码转化的方式来解码。
str_16_1="b'\\u4f60\\u597d'"
str_16_2=str_16_1.encode('utf-8').decode('unicode-escape')          #进行编码转化
print(str_16_2)         #转化结果是"b'你好'"
'''
运行结果:
b'你好'
'''


http://www.ppmy.cn/embedded/153156.html

相关文章

【什么是MVCC?】

MVCC&#xff08;Multi - Version Concurrency Control&#xff09;即多版本并发控制。 一、背景和概念 在数据库系统中&#xff0c;并发控制是非常重要的。当多个事务同时访问和修改数据时&#xff0c;需要一种机制来确保数据的一致性和正确性。MVCC 是一种并发控制的技术&a…

Seata的部署与微服务集成

文章目录 Seata的部署与微服务集成1. Seata介绍2. 部署TC服务2.1 数据准备2.2 配置文件2.3 docker 部署2.4 访问 3. 微服务集成Seata3.1 引入服务3.2 改造配置3.3 添加数据库表3.4 注解标记 Seata的部署与微服务集成 1. Seata介绍 Seata 是一款开源的分布式事务解决方案&…

c#集成itext7导出pdf,包含表格

在Nuget解决方案中搜索itext7&#xff0c;进行安装 同时还要安装 itext7.bouncy-castle-adapter。 否则 PdfWriter writer new PdfWriter(pdfOutputPath);执行时会报错unknown PdfException&#xff0c;然后生成一个空白的pdf&#xff0c;且显示已损坏。 捕获异常发现 ex.In…

【ROS2】URDF模型文件中Xacro宏语言详解

1、简介 URDF(Unified Robot Description Format)是ROS中用于描述机器人模型的一种XML文件格式; 而Xacro则是为了优化URDF文件的编写过程而引入的一种XML宏语言; Xacro提高了URDF文件的可读性和复用性,可以在URDF文件中使用变量、数学运算和宏定义等功能; 比如:连杆、关…

ocrmypdf使用时的cannot import name ‘PdfMatrix‘ from ‘pikepdf‘问题

最近在做pdf的ocr,之前使用过ocrmypdf&#xff0c;打算再次使用&#xff0c;发现它更新了&#xff0c;所以就打算使用最新版 环境&#xff1a;win11anaconda 创建虚拟环境后安装语句&#xff1a; pip install ocrmypdf -i https://pypi.tuna.tsinghua.edu.cn/simple pip in…

微信小程序中使用weui组件库

这里只介绍官方推荐的通过useExtendedLib扩展库的方式引入&#xff0c;这种方式引入的组件将不计入代码包的大小。 app.json中配置 {"useExtendedLib": {"kbone": true,"weui": true} }在使用组件的页面的 json 文件加入 usingComponents 配置字…

静态路由配置与调试——计算机网络实训day1

文章目录 操作前准备一、实验目的二、实验要求三、实验过程1、在R1和R2上配置设备名称。基本配置设备命名 2、在R1和R2上配置接口IP地址&#xff0c;并查看IP地址的配置情况。3、在R1和R2上配置静态路由&#xff0c;并查看路由表。静态路由缺省路由&#xff08;默认路由&#x…

设计模式中的代理模式

在Java中&#xff0c;代理模式&#xff08;Proxy Pattern&#xff09;可以通过静态代理和动态代理两种主要方式实现。 一、静态代理模式 在编译时就已经确定了代理类和被代理类的关系。 代理类和目标对象通常实现相同的接口或继承相同父类。 缺点是对于每个需要代理的目标对象…