大数据基于被分析的海量数据。如何有效地提取和利用这些信息成为一个巨大的挑战。雅虎、谷歌等搜索引擎可以辅助检索数据和信息,但存在一定的不足。搜索引擎返回的结果信息量涉及方方面面,没有分类,针对性不强;造成搜索引擎服务器资源与无限网络数据资源之间的冲突;针对一般搜索引擎存在的问题,针对特定主题需求,针对网络资源进行定向爬取的聚焦爬虫应运而生。在实现网络爬虫时,他尽量保证只爬取和需求相关的网页信息并进行处理和过滤。根据所需的网页分析算法过滤与主题无关的链接,保留有用的链接并将其放入URL队列等待被抓取。爬虫爬过的所有网页都会被系统存储起来进行一定的分析、过滤和索引,以供后续查询和检索。
Python 爬虫 scrapy 框架
Scrapy 是利用 Python 语言编写的网络爬虫框架。一个目的为了爬取网站内容,提取结构性数据而编写的开源爬虫应用框架。可以运用在包括数据挖掘,信息处理或者存储历史数据等一系列的程序中。Scrapy 最初的设计目的是页面抓取,也可以是用来获取各种 API 返回的数据。在 scrapy 项目中,只需写入定制的爬虫规则、运行即可快速获得所需要的数据信息。爬取网页内容代码如下:
def s_requests(self):
url = 'http://weburl:port'
headers = {
'Content-Type' : 'application/x 一 www-form-urlencoded ; charset=UTF-8
} yield scrapy.FormRequest ( url=url ,
headers=headers ,
callback=self.get_city)
网页爬取内容中的字段处理 def test(d_list,field):
f_list=[]
t_temp =d_list[field].values
for i i_temp:
temp = i.split(' ')
if len(temp) > 1:
for k in temp:
t = k.strip()
if (t not in f_list) and (t != ''):
f_list.append(t)
else:
if (i not in f_list) and (i != ''):
f_list.append(i)
return f_list
创建 Scrapy 爬虫框架需要在 Python 的控制台中输入创建命令,也可以通过 UI 图形界面点击创建。例如,创建一个爬取电影数据信息的 Scrapy 爬虫项目的命令如下:scrapy startproject film
数据清理
数据清洗用于检测和纠正、删除表或数据库中不准确或损坏的记录。数据擦除是指识别不正确、不完整、不相关或其他有问题(“脏”)的数据部分,然后替换、修改或删除脏数据。
(1) 删除不必要的观察。
在数据收集过程中,最常见的是重复观察或冗余观察。当合并来自不同位置的数据集或从客户端接收数据时,由于数据是重复的,这种观察会极大地影响效率,并可能增加正确或不正确的因素,从而导致不忠实的结果。例如,在手写数字识别领域,扫描错误(如污迹或非数字字符)是无关紧要的观察。这样的观察是无用的数据,可以直接删除。
(2) 修复数据集中的结构错误。
结构性错误是指测量和数据传输过程中的排字错误、相同的属性名称不同、标签类型不正确、大小写不一致等。例如,模型应处理大写的拼写错误和不一致(如“BBBb”和“BBBB”) ") 作为同一类别,而不是两个不同的类别。
(3) 处理丢失的数据。
收集到的数据中的一件重要事情是“缺失数据”。数据集中的缺失值不能简单地忽略,缺失的数据必须以某种方式处理。比如删除有缺失值的观察或根据过去或其他观察估计缺失值。
Python 数据分析
Python 语言数据分析库目前非常广泛,从科学计算领域的 Numpy 和 Scipy 到 Web 上的 Django 和用于创建可视化的基于 Web 的工具箱 Plotly 到 Seaborn,以及专注于统计模型的 Seaborn。其中,使用频率更高的是Numpy和Pandas。Numpy 是一个基于 Python 的开源工具库,支持多种数值运算。最重要的特点是该工具可以支持大量的矩阵数据运算,具有强大的计算能力。numpy 提供了多种数学计算工具,可以用来实现强大的数学函数,比如线性代数。Pandas也是基于Python开发的,数据分析工具包基于Numpy。它提供一维数组(系列)和二维数组表数据结构(DataFrame)是其核心数据模型。 数据包集成了常用的数据分析功能。 例如,Pandas 库可用于汇总二维数据表结构(DataFrame)中的简单数据统计,包括具有最高值、平均值和正态分布的数据。 数据预处理和分析结合 Pandas 和 Numpy 工具包来高效处理数据集。 统计计算结果后,可以通过数据清洗、缺失处理、噪声消除等操作进一步提取有价值的数据集。 而且 Pandas 也有大量的内置库和一些标准的数据模型,特别是对于非常高效快速的大规模数据处理。比如处理几千万行的CVS数据,用字典处理大约需要2分钟,而pandas需要不到10秒,而且代码行数更少。在掌握和学习如何使用这些数据分析库之后,Python 将成为当前市场上大数据分析的首选。除了这些库之外,Python还有各种包资源,比如人工智能、神经网络等。
数据可视化操作
数据可视化的主要目的是以图形方式清晰有效地传达信息。关键方面和功能的直观交流使您能够详细了解相对稀疏和复杂的数据集。开发者需要能够把握设计和功能之间的平衡,才能创造出引人注目的数据可视化,达到信息传递和交流的效果。
(1)Python 可视化模块
Python 中的可视化工具包括常规软件工具和某些软件组件。通用软件工具是集成开发环境(IDE),特定软件绘图组件是 Python 绘图库,例如 Bokeh,iPython,Matplotlib,Scipy,Numpy,Scikit-learn和 Seaborn。Plotly 是一种在线分析和数据可视化工具。提供用于绘图,分析和统计。该工具基于 Python,具有一个用户界面,该用户界 面使用 JavaScript 和由 D3.js,HTML 和 CSS 制成的可视化库。包含兼容多语言的科学制图库,例如 Arduino,Julia,MATLAB,Python和 R.最常见的可视化类型包括以下类别:比较和排名,相关性,分布,位置定位或地理数据,随时间变化的趋势等。
(2)Python 数据可视化处理
Python 有很多绘图包,Matplotlib 是个专门针对于数据绘图功能设计的第三方库,其 pyplot 子库主要用于进行各类型数据展示图形的绘制。Matplotlib 库将绘图所需的各种方法和功能都封装在函数中,为用户提供了操作和使用上更加友好的接口。通过 Matplotlib,开发者可以仅需要几行代码,便可以生成绘图,直方图,功率谱,雷达图条形图,错误图,散点图等。即使是绘制图形,Python 的代码仍旧简短、简洁、简单,另初学者都能轻易看懂读懂。以雷达图为例,随即抽样了某大学一年级五位学生在五项科目考试成绩的数据,经过数据清理,使用 Python 来绘制多级雷达图,即在一组同心圆上填充绘制不规则五边形,其每个顶点到圆心的距离代表分院学生的每个科目的成绩。程序运行源代码如下:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['font.family']='SimHei' matplotlib.rcParams['font.sans-serif']='SimHei' radar_labels=np.array(['语文','数学','英语','历史','地理'])
nAttr=5
data=np.array([[52,63,85,63,76],
[91,62,53,75,62],
[45,82,98,83,76],
[75,84,65,76,82],
[89,77,62,74,62]])
data_labels=('小明','小红','小军','小方','小文') angles=np.linspace(0,2*np.pi,nAttr,endpoint= False) data=np.concatenate((data, [data[0]])) angles=np.concatenate((angles, [angles[0]])) fig=plt.figure(facecolor="white")
plt.subplot(111, polar=True)
plt.plot(angles,data,'o-',linewidth=1.5, alpha= 0.2) plt.fill(angles,data, alpha=0.25)
plt.thetagrids(range(0,360,int(360/len(radar_labels))), radar_labels,)
plt.figtext(0.52, 0.95,'大学生成绩',ha='center',size=20) legend=plt.legend(data_labels,loc=(0.94,0.80), labelspacing=0.1)
plt.setp(legend.get_texts(),fontsize='large')
plt.grid(True)
plt.savefig('tongshi.png')
plt.show()
大学生科目成绩有五个属性,设置属性标签radar_labels,预设每个人的分数汇总数据。 (np.concatenate)函数用于闭合数据和角度的数组,方便调用(plot)。图形保存格式为 Python 支持的 PNG 类型。最后通过(show)函数显示图形。默认图形文件保存路径与代码保存路径相同。成功实现了一个简单的雷达图,让我们可以更直观地观察每个学生的表现。Python 数据可视化可以应用于更广泛社会的各种问题。大数据时代,海量、高纬度、非结构化数据层出不穷。Python具有超大图像、纯色、高亮度、高分辨率等优点,数据信息实时更新,实现实时图形可视化、场景可视化和数据实时交互,让用户了解数据 信息更简单明了。