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

Python爬虫基础——数据清洗

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

1、异常值的处理

1.1 读取数据

1.2处理异常值

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

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

2、乱码的处理

2.1方法一

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

2.2方法二

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

还有一种常见乱码是以“\u”开头的十六进制字符串,需要通过编码转化的方式来解码。
##############################
##作者:白雪公主的后妈
##时间: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.kler.cn/a/472693.html

相关文章:

  • AIA - APLIC之三(附APLIC处理流程图)
  • Nature Electronics——近传感器计算:50 nm异构集成技术的革命
  • Cursor无限续杯——解决Too many free trials.
  • 【大模型】百度千帆大模型对接LangChain使用详解
  • 晨辉面试抽签和评分管理系统之一:考生信息管理和编排
  • 【Qt】C++11 Lambda表达式
  • python虚拟环境的使用
  • 【2024华为OD-E卷-200分-会议接待】(题目+思路+JavaC++Python解析)
  • Pytorch学习12_最大池化的使用
  • Elastic-Job相关
  • 案例解读 | 香港某多元化综合金融企业基础监控+网管平台建设实践
  • 微信小程序动态更改富文本的css样式
  • Jenkins-持续集成、交付、构建、部署、测试
  • 腾讯云AI代码助手编程挑战赛——贪吃蛇小游戏
  • QT学习二十一天 Quick 应用程序主窗口
  • 了解SQL
  • MongoDB的部署和操作
  • 微服务面试相关
  • Qt之Cannot create children for a parent that is in a different thread问题分析
  • uniapp的两种弹窗方式
  • ffmpeg aac s16 encode_audio.c
  • idea 编辑竖列:alt +shift+insert
  • Python的Matplotlib库应用(超详细教程)
  • C++ ——— 匿名对象
  • Spring AI零起点搭建AI应用
  • spring:xml声明bean的多种方式。