数据清洗优化及数据评分系统搭建
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第五讲数据清洗优化及数
据评分系统搭建
1.1 Python安装与第一个Python程序
1.2 Python基础知识
1.3 Python最重要的三大语句详解
1.4 函数与模块
5.1.1 数据去重
因为数据库并不能自动识别重复信息,所以同样的内容很有可能被重复录入数据库,这样一是浪费空间,二是对数据提取造成很多麻烦。
第一步是查询数据库并查看数据是否已经存在,代码如下:
5.1.1 数据去重
在写for循环的时候,另一种方法是直接写for j in data_all,这样每一个j就不再是数字,而是data_all这个大元组中的一个小元组,j[1]就是小元组中的标题信息,代码可以改写如下:
我们需要提取其中各个小元组(每条新闻的所有相关信息)中的第二个元素“新闻标题”,就得利用data_all[j][1] (j[1])。
5.1.1 数据去重
现在我们可以使用If()函数进行编码,如果新挖掘的数据title()不在我们现有的列表title_all()中,那么我们将使用从第4章中学习的MySQL方法来添加它,下边我们使用的是not in逻辑判断,就是“不在”的意思。
5.1.1 数据去重
我们把查询数据、筛选数据和插入数据的操作汇总在一起,代码如下:
5.1.1 数据去重
5.1.1 数据去重
5.1.2 常见的数据清洗手段及日期格式统一
首先回顾一下在1.4.3介绍的常见的数据清洗的手段:(1) .strip():我们会用这个删除日期两边多余的空格
5.1.2 常见的数据清洗手段及日期格式统一
(2) .split() 如果日期包含时间,我们将使用此方法从字符串中提取日期
5.1.2 常见的数据清洗手段及日期格式统一
(3) .sub() 我们将使用此方法把年、月、日更改为“-”
5.1.2 常见的数据清洗手段及日期格式统一
结合1-3中提到的代码,我们将得到以下结果:
5.1.3 文本内容深度过滤-剔除噪声数据
(1)根据新闻标题进行简单过滤
先介绍一种比较简单剔除噪声数据的方法:观察所爬取的公司是否在标题里面,代码如下:
5.1.3 文本内容深度过滤-剔除噪声数据
(2) 根据新闻正文内容进行数据深度过滤
我们还需要通过新闻文章的主体进行筛选,如果文体中提到公司名称,因为我们已经获得了网址,所以我们可以使用代码来检索主体。这里也可以加上2.3小节讲过的headers来模拟浏览器和3.4小节的timeout来防止访问超时,代码如下:
5.1.3 文本内容深度过滤-剔除噪声数据(2) 根据新闻正文内容进行数据深度过滤合并5.1.3中的所有代码:
5.1.3 文本内容深度过滤-剔除噪声数据(3)如果公司有多名称?
改成:
以华能贵诚信托为例(华能信托的全称)如果我们只搜索其中一个名字,引用其他名字的文章将被意外删除。上面的代码允许python 搜索第一个字company[0]和最后一个字company[-1],以及介于0到5个字’{0,5}’之间的任意位置。
5.1 深度分析-
数据去重及清洗优化
有的网站的源码爬出来会出现中文乱码现象,就是源代码里本来该是中文的地方变成了杂乱的符号。
比如第一章1.4.4小节我们曾试着爬取百度首页https://,结果乱码了:
5.2.1 编码分析
出现这种情况的原因,主要就是Python获得的网页源代码的编码方式和网页实际的编码方式不一致,从而导致最后呈现的结果为乱码,这时就需要对编码进行分析,并重新编码和解码来获取想要的内容。
在解决问题乱码问题之前,得先分析一下Python获得的网页源代码的编码方式,以及网页实际的编码方式,看看俩者是否不同,试用一下的方式就可以了:
5.2.1 编码分析
Python获取的源代码的编码方式为ISO-8859-1。
网页实际的编码方式查看方法如下:通过2.1.1小节所讲的知识点,在网页上按一下F12键,调出网页源代码界面,如下图所示,展开最上方的head 标签,其中中存储着网页实际的编码方式,可以看到网页实际的编码方法为utf-8,这与Python获取的ISO-8859-1编码方式不一致,从而导致了乱码现象。
5.2.2 重新编码及解码
可以通过重新编码及解码的方式来解决乱码问题,代码如下:运行结果:
5.2.2 重新编码及解码
encode()和decode()代码可以分开来使:
打印的结果就是utf-8的方式写“华小智”:
5.2.2 重新编码及解码
我们还可以使用decode()函数来解码utf-8消息:
打印的结果如下:
5.2.3 万金油的解决办法
如果您仍然不完全理解本章前面描述的编码方法,我们可以使用下面的三
种方法来解决数据挖掘时的大多数问题。
方法1:对于大部分的网站用这个最常规的写法就可以(为了演示编码知识,先不加headers和timeout):
5.2.3 万金油的解决办法
因为根据众多项目经验,大部分的乱码都是因为Python获取的内容的是以ISO-8859-1的方式编码的,而网页实际的编码方式则为gbk或者utf-8编码方式,所以通过尝试这三种方法可以解决绝大多数乱码的问题。
如果不想一个个试,可以通过try except方法来把三种方法整合到一起,代码如下:
这里通过4个版本的评分系统来展示一个比较完善的舆情数据评分系统如何搭建5.3.1 舆情评分系统版本1:根据标题评分
舆情数据评分系统有个最简单的评分方式,就是根据标题中是否出现我们所定义的负面关键词即可,主要用到的就是in逻辑运算符,我们需要补充的代码如下: