内容正文:
第四章 数据处理与应用
第2节 (共4课时)
大数据处理
教材版本册别:浙教版(2019)必修1
高中信息技术
学习
目录
01
大数据处理的基本思想与架构
编程处理数据
02
文本数据处理
03
数据可视化
04
学习目标
1
2
能够编程处理数据,进行文本数据处理;
了解大数据处理的基本思想与架构;
3
能够根据实际问题,选择恰当的方式把数据可视化,提升利用数字化工具解决实际问题的能力,进而提升信息技术学科素养。
一
课堂导入
一天的数据
这就是我们普通人一天产生的数据。
一
课堂导入
同学们,这些都是大数据在生活中的应用,前面咱们也学习了如何处理表格数据。
大数据具有数据量大、数据来源与类型多样、处理速度快等特点,简单的表格处理软件已经无法满足大数据的处理需求,同时,大数据技术、理论和处理方法也在不断发展,为大数据的处理提供了越来越有力的支持。
Part 1
大数据处理
的基本思想与架构
一
大数据处理的基本思想与架构
大数据处理的基本思想
Job
Worker
Worker
Worker
Worker
Worker
Worker
分治
处理大数据时,一般采用分治思想。
+++++
一
大数据处理的基本思想与架构
什么是分治思想?
★ 分——将问题分解为规模更小的子问题
★ 治——将规模更小的子问题逐个击破
★ 合——将已解决的子问题合并,最终得出原问题的解
一
大数据处理的基本思想与架构
任务1:通过计算感受大数据有多“大”
根据信息存储全球领导厂商EMC公司的界定,规模至少在10TB左右的数据集合才能被称为大数据。若你的手机拍出的照片每张约5MB。你每天拍100张照片并保存下来,要存满10TB大约需要多少年?(提示:1TB=1024GB=1024*1024MB)
思 考
求解过程
所需年数=数据总量/(每张照片的数据量*每天拍的照片数*365天)
=10TB/(5MB*100*365)
=10*1024*1024*1024MB /(5MB*100*365)
≈57.5(年)
一
大数据处理的基本思想与架构
某公司搜集了过去一年发布的所有微博数据,需要统计其中出现频率最高的100个词。
思 考
求解过程
wordcount = {}
for word in open(filename,'r').read():
wordcount[word] += 1
统计文件filename中各单词出现的频率,用Python编程实现的部分代码如下:
p_color=[[84,24,70],[229,160,145],[133,161,107],[200,176,200],[201,80,85]]
再使用以下语句读取各个像素的R、G、B颜色分量值(变量i为列表p_color的索引):
R=p_color[i][0]
G=p_color[i][1]
B=p_color[i][2]
从而计算出各个像素的灰度值并实现黑白像素判断。
一
大数据处理的基本思想与架构
在数据量较小的情况下,程序的处理速度是非常快的。如果数据量、单词词汇量非常大(数十亿),那么运行这个程序、处理数据的速度将变得非常慢。
有10台计算机,每台计算机可以处理1000M数据。
每台计算机处理数据后,将计算结果汇总到一台主控计算机上,由主控计算机根据中间计算结果汇总统计出最终计算结果,并输出出现频率最高的单词,这样就可以处理10G的词汇数据。
有100台计算机,按理应该可以处理100G词汇数据。
p_color=[[84,24,70],[229,160,145],[133,161,107],[200,176,200],[201,80,85]]
再使用以下语句读取各个像素的R、G、B颜色分量值(变量i为列表p_color的索引):
R=p_color[i][0]
G=p_color[i][1]
B=p_color[i][2]
从而计算出各个像素的灰度值并实现黑白像素判断。
但又有新的问题,100台计算机同时向主机传输数据可能会遇到主控计算机网络传输带宽的瓶颈。这时,可对网络结构进行改造,每10台分为一组分别汇总,最后提交给主控计算机完成最后的统计。
一
大数据处理的基本思想与架构
如果是1000台、1万台或者10万台计算机,这种处理模式就行不通了。
主控
计算机
计算机
计算机
计算机
计算机
计算机
计算机
计算机
计算机
新的问题
1.多台计算机同时向主控计算机传输数据可能遇到主控计算机网络传输带宽的瓶颈,
2.随着计算机数量的增加,发生机器故障、网络故障的风险不断增加。即使只有一台计算机出现了问题,整个的计算都将是不成功的。
一
大数据处理的基本思想与架构
解决办法
将同一份数据分发给不同的计算机,假设发给了3台计算机,当其中1份数据发生计算故障时,剩下的2份备份数据的计算结果还能相互验证,保证最终结果的正确性。这就需要一台或多台计算机负责管理,并运行专门的软件检测计算过程中的故障,在检测到故障时能重新安排计算任务。
这种“分治”的思想就是处理大数据的基本思路。
一
大数据处理的基本思想与架构
概念
把一个需要非常巨大的计算能力才能解决的问题分成许多小部分,然后把这些部分分配给许多计算机进行处理,最后把这些计算结果综合起来得到最终的结果。
案例
利用分布在世界各地成千上万台闲置计算机的计算能力,分析来自外太空的电信号,探索可能存在的外星智慧生命。
分布式计算
并行处理
并行处理(Parallel Processing)是计算机系统中能同时执行两个或更多处理的一种计算方法。并行处理的主要目的是节省大型和复杂问题的处理时间。
一
大数据处理的基本思想与架构
大数据处理
批处理计算
(Hadoop、Spark等)
静态数据
流计算
(Stomm、Heron等)
流数据
图计算
(Pregel、GraphX等)
图数据
一
大数据处理的基本思想与架构
静态数据:在处理时已收集完成、在计算时不会发生改变的数据,一般采用批处理方式。
一
大数据处理的基本思想与架构
流数据:不间断地、持续地到达的实时数据,随着时间的流逝,流数据的价值也随之降低,通过实时分析计算可以得到更有价值的分析结果。
一
大数据处理的基本思想与架构
现实世界中的许多数据,如社交网络、道路交通等数据,可采用图计算模式进行
处理。
图数据:现实世界中的许多数据,如社交网络、道路交通等数据,可采用图计算模式进行处理。
社交网络数据转换成图结构
一
大数据处理的基本思想与架构
数据
分类
①新冠病毒传播路径 ②手机中保存的照片
③用户实时浏览记录 ④2022年各大高校录取情况
⑤直播间实时观看人数 ⑥社交网络数据
静态数据:流数据:
图数据:
②④
①⑥
③⑤
一
大数据处理的基本思想与架构
批处理计算
1
Hadoop是一个可运行于大规模计算机集群上的分布式系统基础架构,适用于静态数据的批处理计算。
借助
Hadoop
类似软件
程序员可以在不了解分布式底层细节的情况下,轻松编写分布式并行程序,将其在计算机集群上运行,完成海量数据的存储与分析。
Spark是一种与Hadoop相似的、应用较广的开源分布式计算架构。Spark启用了内存存储中间结果,运行速度比Hadoop快很多。
一
大数据处理的基本思想与架构
Hadoop计算平台主要包括Common公共库、分布式文件系统HDFS、分布式数据库HBase、分布式并行计算模型MapReduce等多个模块。
Hadoop的组成
一
大数据处理的基本思想与架构
分布式
文件
系统
HDFS
①
Windows的文件系统采用FAT32或NTFS,Linux的文件系统为Ext2/Ext3/Ext4,这些文件系统均不能满足分布式文件的管理需求。Hadoop分布式文件系统(Hadoop DistributedFile System,简称HDFS)是谷歌文件系统(Google File System,简称GFS)的开源实现。
它的主要功能是将大规模海量数据以文件的形式、用多个副本保存在不同的存储节点中,并用分布式系统进行管理。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。
文件系统
主要功能
一
大数据处理的基本思想与架构
②
分布式
数据库
HBase
HBase是一个高可靠、高性能、可伸缩、分布式的列式数据库,是谷歌BigTable数据库的开源实现。
与传统关系型数据库采用基于行的存储形式、用于管理表格类的结构化数据不同,HBase建立在HDFS提供的底层存储基础上,采用基于列的存储方式,主要用来存储非结构化数据和半结构化数据,具有良好的横向扩展能力,可管理PB级的大数据。
从而计算出各个像素的灰度值并实现黑白像素判断。
一
大数据处理的基本思想与架构
分布式
并行
计算
模型MapReduce
③
MapReduce是一种分布式并行编程模型,能够处理大规模数据集的并行运算,主要由Map(映射)和Reduce(归纳) 2个函数构成。HDFS提供了分布式计算时每个节点服务器对数据的访问,HDFS 与MapReduce 的结合,使得在处理大数据的过程中计算性能、数据容错性得到了保障。
当 数 据 量 很 大 时, 一 台 服 务 器的 处 理 能 力 无 法 满 足 需 求, 这 时,MapReduce分布式并行计算的优势就体现出来了,它的核心处理思想是将任务分解并分发到多个节点上进行处理,最后汇总输出。
如右图所示,大数据集拆分为多个分片数据后分发到多个服务器中,Map函数把处理要求映射为多个map任务在节点服务器进行计算处理,节点任务处理完成后由Reduce函数归纳计算结果并输出。
MapReduce
的工作流程
一
大数据处理的基本思想与架构
谷歌发表了关于谷歌分布式文件系统的论文。谷歌仅开源了思想而未开源代码,utch项目组便根据论文开源实现了Nutch 的分布式文件系统(NDFS)。
Hadoop 成为Apache顶级项目,迎来了它的快速发展期。
谷歌发表了关于谷歌分布式计算框架,apReduce的论文,该框架可用于处理海量网页的索引问题。
NDFS和MapReduce从Nutch项目分离,为项目起名为Hadoop。
2003年
2004年
2006年
2008年
Hadoop最早起源于Nutch项目。Nutch是一个开源的网络搜索引擎,由Doug Cutting于2002年创建。随着网页数量的增加,项目组遇到了数十亿网页的存储和索引问题。
Hadoop
的发展历史
一
大数据处理的基本思想与架构
流计算
2
流计算的发展
设计初衷
不足
提升
面向大规模的批量处理,适用于处理静态数据
在流数据实时处理时明显性能不足,比如大型购物网站的广告推荐、社交网络的个性化推荐、根据交通路况实时更新导航线路等应用场景。
随着数据处理量及实时性要求的提高,诞生了专门处理流数据的计算平台。
一
大数据处理的基本思想与架构
通过流计算系统,可以简单、高效、可靠地实现实时数据的获取、传输和存储,在与数据库、Hadoop、编程语言等整合后可开发出功能强大的实时计算与分析应用。
典型的应用如Twitter的社交网络数据处理,采用了如左图所示的分层数据处理架构,每天可实时处理数十亿事件的数据。
Twitter的
分层数据处理架构
一
大数据处理的基本思想与架构
Twitter Storm
处理流数据的软件系统
IBM InfoSphere Streams
Facebook Puma
…………
银河流数据处理平台(淘宝)
Yahoo! S4
Heron是Storm的替代产品,其外部接口和Storm保持兼容,在流数据处理性能方面与Storm相比有了大幅提升。
Storm和S4是目前较为流行的开源分布式实时计算系统。
一
大数据处理的基本思想与架构
图计算
3
蛋白质激素构成图
(由2.7万个节点和794万条边组成)
现实世界中的很多数据是以图的形式呈现的,或者是可以转换为图以后再进行分析的,如社交网络、网络浏览与购买行为、传染病的传播路径等。
大规模的图往往有数十亿的节点和数千亿的边(节点之间关系的连线),节点之间的关系错综复杂,如右图所示的蛋白质激素构成图。
一
大数据处理的基本思想与架构
传统的Hadoop架构在处理大型图计算的问题时性能上明显不足,专业的图计算软件应运而生。
通用的
图处理软件
图数据库
如Neo4j、InfiniteGraph、OrientDB等。
并行图处理系统
如Google Pregel、
Apache Giraph、卡内基梅隆大学的GraphLab、运行于Spark平台的GraphX等。
一
大数据处理的基本思想与架构
蛋白质激素构成图
现实世界中的很多数据是以图的形式呈现的,或者是可以转换为图以后再进行分析的,如社交网络、网络浏览与购买行为、传染病的传播路径等。
大规模的图往往有数十亿的节点和数千亿的边(节点之间关系的连线),节点之间的关系错综复杂。
蛋白质激素构成图(由2.7万个节点和794万条边组成)
一
大数据处理的基本思想与架构
目前通用的图处理软件主要包括两类
两类
如Neo4j、InfiniteGraph、OrientDB等
图数据库
如Google Pregel、
Apache Giraph、卡内基梅隆大学的GraphLab、运行于Spark平台的GraphX等。
并行图处理系统
一
大数据处理的基本思想与架构
实时处理与批处理的整合
4
2014年9月
Twitter开源了其大数据处理系统Summingbird,该系统实现了批处理和流计算在一个平台架构下的整合(Hadoop+Storm)。
开发者
开发者在同一个平台既可以做批处理,也可以做流计算,还可以进行两种模式的混合使用。
平台
平台的整合缩短了批处理与流处理之间的切换延时时间,有利于减少系统的开销,降低使用成本。
Part 2
编程处理数据
二
编程处理数据
计算机语言编程
Python语言
编程处理数据
可以调用Python的扩展模块
可以更加灵活、深入地进行数据分析和挖掘。
numpy
scipy
pandas
matplotlib
常用的扩展模块
二
编程处理数据
基于numpy实现,主要用于数据的处理和分析。它提供了大量处理数据的函数和方法,能方便地操作大型数据集。
Python中做科学计算的基础库,主要提供科学计算中常用的随机数、数组运算等基础函数。
基于numpy构建的一个模块,增强了在高等数学、信号处理、图像处理、统计等方面的处理能力。
numpy
模块
scipy
模块
pandas
模块
二
编程处理数据
以pandas为例,介绍使用计算机程序设计语言编程进行数据处理的方法。
利用pandas模块处理数据
使用这两种数据结构,可完成数据的整理、计算、统计、分析及简单可视化。
pandas提供了Series和DataFrame两种数据结构。
用处
在Python中引入pandas模块的方法如下:
import pandas as pd
数据结构
引入方法
导入模块,别名为“pd”
二
编程处理数据
Series
1
p_color=[[84,24,70],[229,160,145],[133,161,107],[200,176,200],[201,80,85]]
再使用以下语句读取各个像素的R、G、B颜色分量值(变量i为列表p_color的索引):
R=p_color[i][0]
G=p_color[i][1]
B=p_color[i][2]
从而计算出各个像素的灰度值并实现黑白像素判断。
Series是一种一维的数据结构,包含一个数组的数据和一个与数据关联的索引(index),索引值默认是从0起递增的整数。列表、字典等可以用来创建 Series 数据结构,与列表不同的是,Series的索引可以指定,类型可以为字符串型。
案例一
创建1个Series 结构类型的对象s1,存储3名同学的身高值。
s1=pd.Series([166,178,180])
print(s1)
运行结果:
0 166
1 178
2 180
dtype: int64 #创建Series对象时指定索引
s2=pd.Series([166,178,180],index=["s01","s02","s03"])
print(s2)
运行结果:
s01 166
s02 178
s03 180
dtype: int64
左列:index
右列:values
二
编程处理数据
通过索引可以选取Series对象中的值,通过赋值语句可以修改Series对象中的值。如:s1[0]=168、s2["s01"]=168,可将s1、s2对象中的“166”改为“168”。
属性 说明
index Series的下标索引,其值默认是从0起递增的整数
values 存放Series值的一个数组
Series对象常用属性
二
编程处理数据
案例二
查看案例1中s1对象的index、values属性值。
for i in s1.index:
print(i)
运行结果:
0
1
2 for i in s1.values:
print(i)
运行结果:
166
178
180 for i in s1:
print(i)
运行结果:
166
178
180
二
编程处理数据
DataFrame
2
p_color=[[84,24,70],[229,160,145],[133,161,107],[200,176,200],[201,80,85]]
再使用以下语句读取各个像素的R、G、B颜色分量值(变量i为列表p_color的索引):
R=p_color[i][0]
G=p_color[i][1]
B=p_color[i][2]
从而计算出各个像素的灰度值并实现黑白像素判断。
DataFrame 是一种二维的数据结构,由1个索引列(index)和若干个数据列组成,每个数据列可以是不同的类型。DataFrame可以看作是共享同一个index的Series的集合。创建DataFrame对象的方法很多,通常用一个相等长度的列表或字典来创建。
二
编程处理数据
案例三
使用相等长度列表的字典构建一个DataFrame对象df1,存储3名同学的姓名、性别、图书借阅次数数据。
设定df1中数据列的顺序
import pandas as pd
data={"姓名":["王静怡","张佳妮","李臣武"],"性别":["女","女","男"], "借阅次数":[28,56,37]}
df1=pd.DataFrame(data,columns=["姓名","性别","借阅次数"])
print(df1)
姓名 性别 借阅次数
0 王静怡 女 28
1 张佳妮 女 56
2 李臣武 男 37
运行结果
设定df1中数据列的顺序
index
可以直接读取二维数据文件创建DataFrame对象。如使用read_excel()函数,读取Excel文件创建DataFrame对象,也可以使用to_excel()函数,创建Excel文件保存数据。
二
编程处理数据
案例四
读取Excel文件“test.xlsx”中的数据,创建DataFrame对象df。
设定df1中数据列的顺序
import pandas as pd
df=pd.read_excel("test.xlsx")
print(df)
运行结果
地区 规格 单位 价格 采价点 采集时间
0 北京市 红富士 一级 元/500克 2.98 超市2 11月中旬
1 北京市 红富士 一级 元/500克 4.88 超市1 11月中旬
2 天津市 红富士 一级 元/500克 5.00 超市1 11月中旬
3 天津市 红富士 一级 元/500克 5.00 超市2 11月中旬
4 石家庄市 红富士 一级 元/500克 3.98 超市1 11月中旬
5 石家庄市 红富士 一级 元/500克 3.98 超市2 11月中旬
二
编程处理数据
DataFrame对象常用属性如下表示。DataFrame中的索引、列标题及值可以通过属性来显示。
DataFrame对象常用属性
二
编程处理数据
案例五
查看df1对象的索引、列标题、值,并将行、列转置。
for i in df1.index:
print(i)
运行结果:
0
1
2
for i in df1.values:
print(i)
运行结果:
['王静怡' '女' 56]
['张佳妮' '女' 52]
['李臣武' '男' 68]
for i in df1.columns:
print(i)
运行结果:
姓名
性别
借阅次数
print(df1.T) #转置行、列
运行结果:
0 1 2
姓 名 王静怡 张佳妮 李臣武
性 别 女 女 男
借阅次数 56 52 68
和Series对象一样,DataFrame对象中的一列可以通过字典记法或属性来检索,列可以通过赋值来修改。
二
编程处理数据
案例六
分别检索df1对象中“姓名”“借阅次数”列数据,并修改“借阅次数”列数据。
df1.借阅次数=[30,52,68]
print(df1)
运行结果:
姓名 性别 借阅次数
0 王静怡 女 30
1 张佳妮 女 52
2 李臣武 男 68
print(df1["借阅次数"])
#通过字典记法检索列
运行结果:
0 28
1 56
2 37
Name:借阅次数, dtype: int64
print(df1.姓名)
#通过属性检索列
运行结果:
0 王静怡
1 张佳妮
2 李臣武
Name:姓名,dtype: object
二
编程处理数据
使用at[]方法可以根据行标签和列标签选取单个值
如通过df1.at[0,"姓名"],可以选取df1对象中第1行、“姓名”列的值。
通过布尔型数据选取满足条件的行
如通过df1[df1["借阅次数"]>30],可以检索df1 对象中“借阅次数”大于30 的数据行。
二
编程处理数据
, G=p_color[i][1]
B=p_color[i][2]
从而计算出各个像素的灰度值并实现黑白像素判断。
DataFrame数据结构提供了丰富的函数,这些函数可以用来进行行、列编辑和统计计算等。
DataFrame
常用函数
二
编程处理数据
1
DataFrame对象中行、列的编辑
新增列
删除列
重命名
rename()
drop()
insert()
DataFrame
根据行标签和列标签设置单个值。
通过append()函数完成
追加数据行
set_value()函数
二
编程处理数据
案例七
对df对象中的数据进行以下编辑:在最后追加一行数据;删除“规格”列数据;删除第1行数据。
#添加1行数据
df_add=df.append({"地区":"石家庄市","规格":"红富士 一级","单位":"元/500克","价格":4.00,
"采价点":"集市3","采集时间":"11月中旬"},ignore_index=True)
df_delc=df.drop("规格",axis=1) #删除"规格"列数据
df_delr=df.drop(0) #删除第1行数据
说明:append()、drop()函数均不改变原有df对象中的数据,而是通过返回另一个DataFrame对象来存放改变后的数据。如本例中df_del=df.drop("规格",axis=1) 不改变df对象中的数据,删除后的数据存放在df_del对象中,del df["规格"] 会永久删除df 对象中"规格"列数据。
二
编程处理数据
2
DataFrame对象中数据的统计与计算
案例八
将df对象中的数据按“地区”分组,并计算分组后各组数据的平均值。
使用groupby()函数,可以对DataFrame对象各列或各行中的数据进行分组, 然后对其中每一组数据进行不同的操作。
g=df.groupby("地区",as_index=False)
print(g.mean()) #计算每组价格数据的平均值
#分组、求平均的代码,也可以写作:g=df.groupby("地区",as_index=False).mean()
运行结果:
地区 价格
0 北京市 3.93
1 天津市 5.00
2 石家庄市 3.98
g=df.groupby("地区",as_index=False)
print(g.mean()) #计算每组价格数据的平均值
#分组、求平均的代码,也可以写作:g=df.groupby("地区",as_index=False).mean()
运行结果:
地区 价格
0 北京市 3.93
1 天津市 5.00
2 石家庄市 3.98
二
编程处理数据
3
DataFrame对象中数据的排序
按索引排序
按值排序
sort_values ()
sort_index()
DataFrame对象中
通过选项ascending=True/False确定升/降序,ascending默认值为True
通过选项axis=0/1 确定排序的轴向,axis默认值为0
纵向排序
升序排序
排序结果返回一个新DataFrame对象。
二
编程处理数据
案例九
对df对象中的数据,按“价格”值降序排序。
df_sort=df.sort_values("价格",ascending=False) #按价格值降序排序
print(df_sort)
地区 规格 单位 价格 采价点 采集时间
2 天津市 红富士 一级 元/500克 5.00 超市1 11月中旬
3 天津市 红富士 一级 元/500克 5.00 超市2 11月中旬
1 北京市 红富士 一级 元/500克 4.88 超市1 11月中旬
4 石家庄市 红富士 一级 元/500克 3.98 超市1 11月中旬
5 石家庄市 红富士 一级 元/500克 3.98 超市2 11月中旬
0 北京市 红富士 一级 元/500克 2.98 超市2 11月中旬
二
编程处理数据
利用 matplotlib 模块绘图
matplotlib是一个绘图库,使用其中的pyplot子库所提供的函数可以快速绘图和设置图表的坐标轴、坐标轴刻度、图例等。
常用绘图函数
二
编程处理数据
在Python中引入matplotlib的pyplot子库的方法为:
import matplotlib.pyplot as plt
案例九
绘制正弦曲线图
g=df.groupby("地区",as_index=False)
print(g.mean()) #计算每组价格数据的平均值
#分组、求平均的代码,也可以写作:g=df.groupby("地区",as_index=False).mean()
运行结果:
地区 价格
0 北京市 3.93
1 天津市 5.00
2 石家庄市 3.98
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 10, 1000)
y1 = np.sin(x)
y2 = np.sin(x**2)
plt.figure(figsize=(8,4)) #创建图表对象
plt.title("sin(x) and sin(x**2)") #设置图表标题文字
plt.plot(x,y1,label="sin(x)",color="r",linewidth=2) #绘制线形图
plt.scatter(x,y2,label="sin(x**2)") #绘制散点图
plt.ylim(-1.5,1.5) #设置y坐标轴的取值范围
plt.xlim(0,10) #设置x坐标轴的取值范围
plt.legend() #显示图例
plt.show()
二
编程处理数据
正弦图
figsize
color
linewidth
label
指定figure对象的宽度和高度
指定线条的颜色
指定线条的宽度
给线条指定一个标签名称
该标签显示在图例中,绘制的图表如右图所示。
p_color=[[84,24,70],[229,160,145],[133,161,107],[200,176,200],[201,80,85]]
再使用以下语句读取各个像素的R、G、B颜色分量值(变量i为列表p_color的索引):
R=p_color[i][0]
G=p_color[i][1]
B=p_color[i][2]
从而计算出各个像素的灰度值并实现黑白像素判断。
二
编程处理数据
利用 Python分析数据实践
案例分析
身边的
百家姓
通过统计某地的姓名数据,分析当地姓氏的构成情况。
分析
数据
如下图所示,姓名数据 以CSV文件格式组织和存储,以UTF-8格式编码。xm.csv文件大小为26.7MB,共有2594178条姓名数据,内容包含姓氏和名字。本次数据处理的目的是统计全部数据中不同姓氏的人数,并通过排序和图表进一步分析。
姓名数据
二
编程处理数据
编制程序
使用Python编程统计、分析当地居民姓氏的构成情况,程序如下:
二
编程处理数据
查看结果
运行上述Python程序,结果如下图所示。观察图表,发现在2594178条姓名数据中,人数前五的姓氏依次为:王、李、张、刘、陈;王姓的人数最多,有102400人。
姓氏统计结果
Part 3
文本数据处理
三
文本数据处理
文本数据处理是大数据处理的重要分支之一
目的
从大规模的文本数据中提取出符合需要的、感兴趣的和隐藏的信息
文本数据处理主要应用
自动应答
搜索引擎
文本分类
自动摘要
添加标题
机器翻译
论文查重
自动校对
情报分析
垃圾邮件过滤
p_color=[[84,24,70],[229,160,145],[133,161,107],[200,176,200],[201,80,85]]
再使用以下语句读取各个像素的R、G、B颜色分量值(变量i为列表p_color的索引):
R=p_color[i][0]
G=p_color[i][1]
B=p_color[i][2]
从而计算出各个像素的灰度值并实现黑白像素判断。
三
文本数据处理
文本数据处理的一般过程
1
文本内容是非结构化的数据,要从大量的文本中提取出有用的信息,需要将文本从无结构的原始状态转化为结构化的、便于计算机处理的数据。典型的文本处理过程主要包括分词、特征提取、数据分析、结果呈现等,如下图所示。
典型的文本处理过程
三
文本数据处理
①
中文分词
中文分词
分词
英文词语
中文词
中文文本信息处理的基础,机器翻译、全文检索等涉及中文的相关应用中都离不开中文分词。
将连续的字序列按照一定的规范重新组合成词序列的过程,也就是将一个汉字序列切分成一个一个单独的词。
英文词语与词语之间有明显的空格,分词不涉及复杂的关键词提取方法
中文词与词之间是紧密相连的,分词方法相当复杂,目前的分词算法还不能实现完全准确的分词。
三
文本数据处理
基于词典的分词方法
p_color=[[84,24,70],[229,160,145],[133,161,107],[200,176,200],[201,80,85]]
再使用以下语句读取各个像素的R、G、B颜色分量值(变量i为列表p_color的索引):
R=p_color[i][0]
G=p_color[i][1]
B=p_color[i][2]
从而计算出各个像素的灰度值并实现黑白像素判断。
也称作基于字符匹配的分词方法,即在分析句子时与词典中的词语进行对比,词典中出现的就划分为词。
右图所示的是Python中文分词模块jieba中词典(dict.txt)的截图。
jieba分词模块中的词典
三
文本数据处理
基于统计的分词方法
基于规则的分词方法
p_color=[[84,24,70],[229,160,145],[133,161,107],[200,176,200],[201,80,85]]
再使用以下语句读取各个像素的R、G、B颜色分量值(变量i为列表p_color的索引):
R=p_color[i][0]
G=p_color[i][1]
B=p_color[i][2]
从而计算出各个像素的灰度值并实现黑白像素判断。
统计分词的思想是依据上下文中相邻字出现的频率统计,同时出现的次数越高就越可能组成一个词。在实际应用中,一般是将其与基于词典的分词方法结合使用。
p_color=[[84,24,70],[229,160,145],[133,161,107],[200,176,200],[201,80,85]]
再使用以下语句读取各个像素的R、G、B颜色分量值(变量i为列表p_color的索引):
R=p_color[i][0]
G=p_color[i][1]
B=p_color[i][2]
从而计算出各个像素的灰度值并实现黑白像素判断。
通过让计算机模拟人的理解方式,根据大量的现有资料和规则进行学习,达到对文字进行分词的效果。由于中文语言知识的笼统性、复杂性,这种分词方法目前还处于试验阶段。
三
文本数据处理
常见的分词系统
三
文本数据处理
②
特征
提取
中文文本分析
在中文文本分析中可以采用字、词或短语作为表示文本的特征项。
难度对比
相比较而言,词的切分难度比短语的切分难度小且更能表达文本的含义。
特征词
大多数中文文本分析中都采用词作为特征项,这种词称作特征词。
三
文本数据处理
分词算法
词频统计
得出的结果
特征词
对于稍大一些的文本
怎么办
提取出的特征词数量将非常大,其计算处理过程的效率非常低,计算结果的准确性也很难令人满意。
p_color=[[84,24,70],[229,160,145],[133,161,107],[200,176,200],[201,80,85]]
再使用以下语句读取各个像素的R、G、B颜色分量值(变量i为列表p_color的索引):
R=p_color[i][0]
G=p_color[i][1]
B=p_color[i][2]
从而计算出各个像素的灰度值并实现黑白像素判断。
必须找出最具代表性、最有效的文本特征,通常的办法是通过特征提取的速度和效率。
解决办法
三
文本数据处理
方式
方法
特征提取一般采用的方式为根据专家的知识挑选有价值的特征,或者用数学建模的方法构造评估函数自动选取特征等。
目前大多采用评估函数进行特征提取的方式,评估函数大多是基于概率统计设计的,这就需要用庞大的训练数据集才能获得对分类起关键作用的特征。
三
文本数据处理
2
文本数据分析与应用
在取得特征词后,对文本的分析就需要根据项目的需求,确定解决问题的路径,选取合适的工具、设计算法抽取出文本中隐含的价值。
标签云
标签云用词频表现文本特征,将关键词按照一定的顺序和规律排列,如频度递减、字母顺序等,并以文字大小的形式代表词语的重要性。
标签云
三
文本数据处理
用处
标签云
方式
标签云广泛应用于报纸、杂志等传统媒体和互联网。
标签云是文本可视化的一种方式。
文本可视化将文本中复杂的或者难以通过文字表达的内容和规律以视觉符号的形式表达出来,使人们能够利用视觉感知能力快速获取文本数据中所蕴含的关键信息,为更好地理解文本和发现知识提供了新的有效途径。
三
文本数据处理
文本情感分析
概念
领域
分类
文本情感分析是指通过计算机技术对文本的主观性、观点、情绪、极性进行挖掘和分析,对文本的情感倾向做出分类判断。
文本情感分析作为一个多学科交叉的研究领域,涉及自然语言处理、信息检索、机器学习、人工智能等领域。
文本情感分析根据分析的粒度不同,分为词语级、语句级、整篇文章级三类。
词语级是在分词的基础上,根据情感词典进行特征提取与分类,再分别给特征词赋予权重进行统计分析。特征词的权重,例如,满意+5 ;差–5等。
三
文本数据处理
文本情感分析主要应用于网络舆情监控、用户评论分析与决策、信息预测等众多领域。
“北京城市数据映像”项目通过采集北京地区的微博数据进行了情感分析的研究,用不同的颜色表示心情,在区域地图上展示了不同地域人们在不同时间点情绪的变化。
城市心情
Part 4
数据可视化
四
数据可视化
数据可视化是将数据以图形图像等形式表示,直接呈现数据中蕴含信息的处理过程。
四
数据可视化
杭州亚运会将于9月23日开幕,为了当好亚运主人翁,暑假期间,学校的亚运调研小分队通过查阅资料、走访调查完成了一份名为《数说亚运》的调研报告。
发现
问题
Q:这一份报告里有很多_______,但却没有________!
数据
图表
四
数据可视化
可视化的作用
(1)快捷观察与追踪数据
利用可视化技术,可以将处于不断变化中的数据生成实时变化的可视化图表,帮助人们快捷地发现各种数据的动态变化过程。
作用
案例
百度地图提供的实时路况服务,可以实时查询各大城市的路况信息;中国天气网提供的临近预报服务,可以实时查询全国各地降水、气温、风力等天气实况。
四
数据可视化
(2)实时分析数据
案例
利用百度指数分析全国某段时间搜索关键词“数据可视化”的情况,通过交互,用户可以选择从趋势研究、需求图谱、舆情洞察、人群画像等多个角度进行分析。
作用
利用可视化技术,可以实时将数据转换为图像呈现给用户,帮助用户分析数据的内涵和特征。同时,用户还可以根据自己的实际需求,通过改变可视化系统的设置,交互式地从不同角度对数据进行解读和分析。
利用百度指数分析关键词“数据可视化”的搜索情况
四
数据可视化
(3)增强数据的解释力与吸引力
案例
国家统计局分析大陆总人口情况
作用
利用数据图表,直观、动态地呈现新闻、研究报告等内容,可以帮助人们在短时间内了解内容、理解数据背后的含义,同时增强数据的吸引力,提高人们的阅读兴趣。已经有越来越多的新闻、研究报告等使用可视化的方式进行播报和发布。
四
数据可视化
可视化的基本方法
(1)有关时间趋势的可视化
or[i][2]
从而计算出各个像素的灰度值并实现黑白像素判断。
不同的数据类型决定了可视化的表现形式。万事万物都随着时间的推移而变化,如天气在变化、人口在迁移、经济在发展……人们通过时间序列数据来观察这些事物变化的过程和趋势,如某个变化量是上升还是下降,是否存在周期性变化等。展现这类时间数据可采用柱形图、折线图等。
(2)有关比例的可视化
B=p_color[i][2]
从而计算出各个像素的灰度值并实现黑白像素判断。
面对一系列总和为1的比例数据,人们常常关心各部分的大小及其占总体比例的情况,如衣服面料中各组成成分的比例,投票结果中赞成、反对、弃权的情况等。展现这类比例关系的数据可以采用饼图、环形图(也称面包圈图)等。
四
数据可视化
(3)有关关系的可视化
实际生活中,人们常遇到这样的问题:当某个对象的数量增加时,另一个数量是否会变化?
or[i][2]
从而计算出各个像素的灰度值并实现黑白像素判断。
如全民的平均身高增高了,平均体重也会随之增长,这是一种简单的、成正比的关联。
对应
功能
探究
关联性意味着当一件事情变化时,另一件事情也可能会发生某种变化。
关联性可以帮助人们根据某一已知指标来预测另一指标。
要想探究这种数据的分布关系,可以使用散点图、气泡图等。
四
数据可视化
可视化的基本方法
散点图用于表现2~3个变量之间的关系,以圆点的多少或疏密展示成对的数和它们所代表的趋势之间的关系。如果两个指标是正相关的,在从左往右读图表时,点的位置会越来越高。相反,如果是负相关,从左往右点的位置会越来越低。有时会通过增加颜色维度来表示第三个变量。
用户满意度和收货天数关系图
如右图所示,某快递公司用户满意度与收货天数关系图的两个维度分别为用户满意度和收货天数。
四
数据可视化
气泡图一次比较3~4个变量,x轴和y轴各表示一个变量,第三个变量通过气泡的面积大小来表示,第四个变量通过气泡的颜色来体现。
卡特里娜飓风路径图
卡特里娜飓风路径气泡图的四个维度分别为经度、纬度、强度和风力等级,点的面积代表强度,点的颜色表示风力等级。
B=p_color[i][2]
从而计算出各个像素的灰度值并实现黑白像素判断。
四
数据可视化
可视化的基本方法
(4)有关差异的可视化
当数据中包含多种变量,要将所有对象进行分组,然后分析每一个变量及所有变量之间的差异,找出其中的异常值。
如两个篮球运动员的场均得分可能是天壤之别,但他们的场均篮板、抢断和盖帽却可能非常接近。
要探寻包含多种变量的对象与同类之间的差异和联系,可以采用雷达图。
案例:
四
数据可视化
可视化的基本方法
NBA球队赛季成绩雷达图
雷达图有多条轴,每一条轴代表一个变量,从正中心开始,等距平分圆周摆放,每相邻两个变量的终点之间有一条连接线。正中心表示各个变量的最小值,而轴末端的终点代表最大值。
雷达图反映数据相对
中心点和其他数据点的
变化情况,如右图所
示。
四
数据可视化
可视化的基本方法
(5)有关空间关系的可视化
在人们的日常活动中,常常会关心“我们在哪里”“我们周边有什么”“我们如何到达目的地”等问题,这些信息都与地理位置有关。随着传感器、移动终端等设备的普及,带有经度、纬度标签的空间数据成为大数据中的重要数据类型。地理数据或者基于地理数据的分析结果可以运用不同颜色或图表直接表现在地图上进行展示。
从而计算出各个像素的灰度值并实现黑白像素判断。
四
数据可视化
可视化的工具
数据可视化工具软件很多,常见的数据分析软件中一般包含创建可视化图表功能。
01
03
大数据魔镜、Gephi、Tableau等
基于JavaScript的D3.js、Highcharts、Google Charts等,基于Python的matplotlib等
A
ITEM
B
ITEM
C
ITEM
主要
编写程序实现数据的可视化
优秀的可视化工具库
用于数据可视化的工具
02
用Python、R等计算机语言
四
数据可视化
Tableau
Tableau主要用于实时可视化分析。它可以连接本地或云端数据,包括文件、SQL 数据库、Web 数据,生成柱形图、饼图、基本地图等多种图形。还可以连接动态数据源,将各种图形混合搭配形成定制视图,或者通过仪表盘视图实时关注数据状态。
D3.js
D3.js是运行在JavaScript上的数据可视化开源工具库。它使用数据驱动的方式,结合强大的可视化组件,可以创建实时交互的网页。
四
数据可视化
Highcharts
是一个用纯avaScript编写的、基于HTML5技术的开源图表库,支持移动端,能够简单便
捷地在Web网站或是Web应用程序中添加动态、交互性的图表。
Highcharts的图表类型丰富,其中很多图表可以集成在同一个图形中形成混合图。它可以免费用于个人学习、个人网站和非商业用途。
Google Charts
Google Charts是为浏览器与移动设备定制的交互式图表开发包,用于在Web上可视化数据。Google Charts功能强大,容易使用,提供了从饼图、时间序列到多维交互矩阵等大量的可视化类型,生成的交互式图表既可以实时输入数据,也可以使用仪表板进行控制。
四
数据可视化
可视化的典型案例
(1)风、气象、海洋状况的全球地图
“风、气象、海洋状况的全球地图”是一个对全球天气进行可视化的网站。该网站将全球的海洋流动、天气变化和风向、风速等的动态数据,在地图上进行可视化展示。
风、气象、海洋状况的全球地图
在这个交互的动画地图上,可以查看现在地球表面的风速流动方向、气象和海洋状况等信息。鼠标拖曳可以移动、改变观察位置。风速越强,地图上线条流动就越快;温度升高,地图颜色就会转为暖色系。有台风出现时,还能清楚地看到台风的结构状况,如圆形的台风眼等。
四
数据可视化
(2)编程语言之间的影响力关系图
编程语言之间的影响力关系图
右图显示编程语言之间的影响力关系,它是德国软件工程师Ramio Gómez制作的交互式关系网图。该图的数据来自 Freebase网站维护的编程语言表,其中包含3900多万个主题、2011 种类型和3万多个属性。图中的每个节点代表一种编程语言,点与点之间的连线表示语言之间有影响关系。影响关系多的语言,其节点在关系网中也越大,如Lisp、C、Smalltalk、Java等。单击各节点,可以查看受其影响的其他语言。如单击Python语言的节点,可以查看受Python影响的其他语言。
四
数据可视化
(3)“双十一”全网销售直播图
“双十一”全网销
售直
播图
下图所示为(星图数据)2016年“双十一”网购狂欢节电商全网销售实时直播图。直播过程中,对海量的实时销售数据,采用了可视化方式进行展现。观察图中信息,可以发现各平台占比采用条形图呈现,贸易往来关系采用地图展现,交易过程中产生的包裹数量采用折线图呈现,各平台海外销售额占比采用柱形图呈现,此外还采用了环形图及其他个性化展现方式。
四
数据可视化
(4)航班飞行实时跟踪地图
航班飞行实时跟踪地图
左图是一家航班跟踪数据公司(Flight Aware)基于全球数以千计的实时数据源提供的航班跟踪地图。在地图上实时显示当前区域中的航班飞行状态,单击某航班,可以查看其已飞航线、航路计划、飞行时间、准点情况、机型、周围航班等信息。
四
数据可视化
(5)微博热词趋势图
微指数是新浪微博提供量微博数据、用户行为数据的整理与挖掘,呈现热词整体趋势、实时变化、地域解读、人群属性分析等结果,反映微博舆情。其中的热词指数通过统计关键词的每日微博热议度,分析其在微博平台中的长期热议趋势,并采用折线图进行展现。
右图所示,对比“粽子”“龙舟”两个关键词在端午节前后1个月的微博热议趋势发现,“粽子”“龙舟”均在端午节当天热议指数达到顶峰,但是“粽子”的提及度要远高于“龙舟”,说明“粽子” 在端午节比“龙舟”更受人们的关注。
四
数据可视化
热词趋势分析的折线图反映出搜索词近期的热度。实时趋势分析可以实时地展现这个词此时此刻最新的微博搜索数据,结果同样展现为折线图。地域解读部分,将不同地域的关键词搜索热度,在地图上通过地域的颜色深浅来展现。属性分析部分,主要是对用户群体的性别、年龄、标签、星座进行分析,并采用柱形图、雷达图等展现。
Part 5
小结
五
小结
Part 6
课堂小练
五
课堂小练
只需知道数据之间相互链接的顺序
探讨与讨论
1.某校搭建了一个智慧教育平台,该平台依托人工智能与大数据分析技术,能全面采集、梳理学生在学习过程中产生的各类数据,开展数据分析及资源推荐等工作。教师与学生均可借助手机、电脑等终端设备访问该平台。为了提高该平台推荐资源的针对性,下列方法不可行的是( )
A.优化平台自动推荐资源的算法
B.引入符合本校学情的教育资源和课程
C.提升平台服务器的硬件设备性能
D.采集师生在平台上的行为数据,分析师生的学习习惯和偏好
C
解析:本题考查的是大数据分析。题干要求选择不可提高平台推荐资源针对性的措施。优化平台推荐算法、引入适合本校的教育资源、采集用户行为数据进行分析,都是直接影响资源推荐质量的措施,能提高针对性。而提升服务器硬件性能主要提高平台的运行速度和效率,对资源推荐的针对性没有直接影响。故选C。
五
课堂小练
只需知道数据之间相互链接的顺序
探讨与讨论
2.下列数据处理不属于文本数据处理的是( )
A.将中文翻译成其他国家的文字
B.解析大量合同文档,有效监控风险条款,节省人力和时间成本
C.将论文内容与对比库中的资料进行对比,检测论文可信度
D.输入姓名、单位等信息,制作通讯录
D
解析:题考查文本数据处理。文本数据处理主要是对文字内容进行操作、分析等。A选项将中文翻译成其他国家文字,是对文本内容进行转换操作,属于文本数据处理;B选项解析大量合同文档,针对的是文档中的文字内容进行风险条款监控,属于文本数据处理;C选项将论文内容与对比库资料对比,也是针对文字内容进行检测,属于文本数据处理;D选项输入姓名、单位等信息制作通讯录,主要是对非文本类的信息(如联系人信息)进行整理构建通讯录,不属于文本数据处理。故答案为:D。
五
课堂小练
只需知道数据之间相互链接的顺序
探讨与讨论
3.下列关于大数据处理的说法不正确的是( )
A.处理大数据时,一般采用分治思想
B.可采用图计算处理方式对比赛的实时视频数据进行分析
C.高效率的数据处理技术能充分发挥数据的价值
D.上一年度的各项数据属于静态数据
解析:本题考查的是大数据处理。处理大数据时,分治思想(将大问题分解为小问题处理)是常用策略,A 正确。比赛实时视频数据是流数据,需用流计算处理,图计算适用于图结构数据(如社交网络关系等 ),B 错误。高效数据处理技术能挖掘数据价值,充分发挥数据作用,C 正确。 上一年度数据不会再变化,属于静态数据,D 正确。故选B。
B
五
课堂小练
只需知道数据之间相互链接的顺序
探讨与讨论
4.某电商公司采用Hadoop架构分析每日TB级别的用户点击日志,生成用户行为报告。下列设计方案不符合这一要求的是( )
A.使用HDFS存储日志文件
B.通过MapReduce进行离线批量计算
C.利用Spark实时处理用户点击事件
D.使用HBase存储用户特征数据
解析:本题考查大数据处理架构。Hadoop架构主要用于处理大规模数据的存储和离线批量计算。HDFS是Hadoop分布式文件系统,适合存储海量数据,可用于存储日志文件;MapReduce是Hadoop的计算框架,能进行离线批量计算,适合处理每日TB级别的用户点击日志来生成报告;HBase是Hadoop生态系统中的分布式列存储数据库,可用于存储用户特征数据。而Spark主要用于实时计算和内存计算,题目要求是分析每日TB级别的日志生成用户行为报告,属于离线批量处理场景,并非实时处理用户点击事件。故答案为:C。
C
谢谢!
高中信息技术浙教版必修1
$