第五章 数据处理和可视化表达

第5章 5.1 认识大数据

5.1.1 什么是大数据

(本节教学视频)

  • 定义

大数据是指无法在可承受的时间范围内,用常规软件工具进行高效捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产

  • 产生

大数据的产生是与人类日益普及的网络行为所伴生的:物联网、云计算、移动互联网、车联网、手机、电脑以及遍布地球各个角落的各种各样的传感器,无一不是数据的来源或是承载的方式。互联网生成的数据量,不仅远超此前一切人类所生成的数据量的总和,而且在以大爆发性的速度不断增长。

  • 应用

在天气预报、大气监测、地球物理探矿和天体运动观测等科学实验和科学观察等活动中,各种各样的传感器每时每刻都在产生大量的数据。

  • 地位

大数据已成为人们提取信息、做出决策的重要依据,是推动信息社会发展的重要资源。

5.1.2大数据的特征

仔细阅读以下案例,分析大数据具有哪些特征。

案例1:某市交通智能化分析平台的数据来源于道路交通、电信、地理信息系统等各行各业。例如,交通卡刷卡每天产生1900万条记录,手机定位数据每天产生180()万条,出租车运营数据每天产生100万条,电子停车收费系统数据每夭产生50万条,等等。这些数据在体量和速度上都达到了大数据的规模。

案例2:搜索引擎公司通过跟踪网民对“感冒症状”以及“治疗”等关键词的搜索, 发现某个时段在某个区域内搜索数量急剧增长,从而成功预测了甲型H1N1流感的暴发时间、地域。

案例3:目前,某基于大数据的网约车平台已覆盖全国400多个城市,涵盖出租车、快 车、顺风车、代驾、专车、试驾以及租车等多项业务,为人们的出行带来极大的便利。我们只需在网约车APP上输入或者说出目的地,强大的智能系统就立刻分配订单,即时通知附近司机;借助定时定位系统,我们可以看到司机的大致位置以及预计到达时间。

(1) 从互联网产生大数据的角度

大数据具有“4V”特征来看,大量(Volume)、 多样(Variety )、低价值密度(Value )、高速(Velocity )

第一,数据体量巨大。从TB级别跃升到PB级别。

第二,数据类型繁多。如网络日志、视频、图片、地理位置信息等。

第三,价值密度低、以视频为例,在连续不间断的监控过程中,有用的数据可能仅仅 一两秒。

第四,变化速度快。数据来自世界各地的网络终端,且以秒为单位快速变化。

(2)从互联网思维的角度来看

大数据具有三个特征:样本渐趋于总体,精确让位 于模糊,相关性重于因果。

第一,在大数据时代强调数据要全量而不是抽样,即强调数据规模全量,而不是强调 数量巨大。大数据时代有了更好的数据采集手段,让获取全量数据成为可能。

第二,大数据时代研究的数据如此之多,追求的不是精确性,而是模糊性。在大数据 时代,只要掌握了大体的发展方向即可,适当忽略微观层面上的精确度,会让我们在宏观 层面拥有更好的洞察力。

第三,大数据时代不是因果关系,而是相关关系。在大数据时代,无须再紧盯事物之 间的因果关系,而应该寻找事物之间的相关关系;相关关系也许不能准确地告诉我们某件 事情为何会发生,但是会提醒我们这件事情正在发生。

(3)从大数据存储与计算的角度

大数据具有两个特征:分布式存储和分布式并行计算

第一,大数据存储在互联网不同的服务器与各客户终端。

第二,应用分布式并行计算处理互联网的大数据。

5.1.3 大数据对日常生活的影响

1.使生活更为便捷

  • 方便支付

​ 中国的移动支付发展得特别快。在中国,每三个手机用户,就有两 个在使用移动支付。中国是全球最大的移动支付市场。医院、餐庁、菜市场、加油站, 甚至路边摊,都在使用移动支付。中国人今天的生活,已经越来越有科技含量。

  • 方便出行

​ 应用交通系统的大数据,网络约车出行,智能导航行车避免堵车, 无人驾驶,智能地图方便寻路,等等。

  • 方便购物与产品推介

​ 网络购物不但节省人们出行购物的时间,而且帮助企业 有效判断用户的信息需求和消费需求,对客户进行产品推介,方便人们选购产品。

  • 方便看病与诊病

​ 应用网络预约挂号,减轻与节省患者排队挂号看病的辛劳与 时间;同时,又方便医生提前分析患者的病史数据,以便更科学诊病。

2.负面影响

  • 个人信息泄露

​ 在大数据时代,我们使用的手机、计算机、网络、信用卡等信 息科技,都会产生数据。这些数据吋刻存在泄露的风险。

  • 信息伤害与诈骗

​ 在大数据时代,我们的网络信息随时都可能被不法分子窃 取,并对我们及身边的亲人造成伤害

知识拓展:使用PYTHON扩展库

1.什么是扩展库

Python从诞生之日起,就提供扩展接口,鼓励参与者通过编写"库"来扩展其功能。这些第三方“库”既可以是Python编写的, 也可以是C语言编写的。Python作为一种胶水语言,可以很方便地与其它语言相互调用。

丰富的包/模块以及源源不断由开源社区的"雷锋"们制造的第三方扩展包/模块是Python广受欢迎的重要原因。现在作者试图用Python解决任何工程问题,决不是简单的"埋头苦干",而是先搜索一下有没有现成的库可以利用。这些库有的包括在标准的Python安装里,称为“标准库",有的需要单独安装。无论是“标准的”还是“第三方的”库,都是对Python功能的扩展,统称扩展库。下表介绍了一些"重要"的Python扩展库。

preview

preview

2.使用扩展库

1)使用标准库

python标准库一般随python系统安装,可以直接使用。如os操作系统库,re正则表达式库,time时间函数库,turtle海龟绘图库等。

A、import 命令引入库(包)

方式一:import 库名

默认情况下,库名会作为该库中所有函数的命令空间,在调用该模块中的函数时,必须这样引用:库名.函数名

优点:当导入多个函数库或者自己有新建变量时,能有效区分同名方法。

import turtle

turtle.pensize(10)      #设置画笔粗线为10像素
turtle.fd(100)          #画笔前进100个像素
turtle.left(90)         #画笔向左旋转90度

在引入库时,还可以用 as 子命令给库起一个别名,方便函数调用。

import turtle as t      #将turtle重命名为t,便于调用

t.pensize(10)       #设置画笔粗线为10像素
t.fd(100)           #画笔前进100个像素
t.left(90)          #画笔向左旋转90度

方式二:from <库名> import *

这种方式下,可以直接使用库中的函数和方法,不用在方法前书写库名。

from turtle import *        #便于调用

pensize(10)     #设置画笔粗线为10像素
fd(100)         #画笔前进100个像素
left(90)            #画笔向左旋转90度

注意:这样虽然用起来方便,但当调用的库比较多时,可能会存在同名函数问题,系统分辨不出需要调用的是哪个函数库,导致出错。

2)使用第三方库

1、pip 是 Python 包管理工具,该工具提供了对Python 包的查找、下载、安装、卸载的功能。

在windows系统中,运行“命令提示符”,键入pip help可以获得pip命令的使用帮助信息。

C:\>pip help

Usage:
  pip <command> [options]

Commands:
  install                     Install packages.
  download                    Download packages.
  uninstall                   Uninstall packages.
  freeze                      Output installed packages in requirements format.
  list                        List installed packages.
  show                        Show information about installed packages.
  check                       Verify installed packages have compatible dependencies.
  config                      Manage local and global configuration.
  search                      Search PyPI for packages.
  cache                       Inspect and manage pip's wheel cache.
  wheel                       Build wheels from your requirements.
  hash                        Compute hashes of package archives.
  completion                  A helper command used for command completion.
  debug                       Show information useful for debugging.
  help                        Show help for commands.
...

2、使用 pip list 查看本机上已经安装的包。
c:\>pip list
Package                    Version
-------------------------- ------------
-ip                        20.2.3
advanced-pip-gui           0.0.0
asstosrt                   0.1.6
beautifulsoup4             4.9.1
bs4                        0.0.1
certifi                    2020.6.20
chardet                    3.0.4
click                      7.1.2
cycler                     0.10.0
future                     0.18.2
……

3、使用pip install 安装包。
c:\>pip install numpy

3.使用turtle库进行绘图。

1)turtle原理

turtle名称含义为“海龟”,我们想象一只海龟,位于显示器上窗体的正中心,在画布上游走,它游走的轨迹就形成了绘制的图形。 海龟的运动是由程序控制的,它可以变换颜色,改变大小(宽度)等。

2)绘图窗体

turtle.setup(width,height,startx,starty)

使用turtle的setup函数,可以在屏幕中生成一个窗口(窗体),设置窗体的大小和位置,这个窗口就是画布的范围。画布的最小单位是像素,屏幕的坐标系以左上角为原点(0,0)分布。

turtleform

屏幕坐标系及窗体

setup的四个参数分别指的是

  • width:窗体的宽度
  • height:窗体的高度
  • startx:窗体距离屏幕边缘的左边像素距离
  • starty:窗体距离屏幕上面边缘的像素距离 其中,后两个参数是可选项,如果不填写该参数,窗口会默认显示在屏幕的正中间。

setup()也是可选的,只是需要定义窗口的大小及位置是才使用。

4.turtle空间坐标体系

绝对坐标

以屏幕中间为原点(0,0),形成四象限的坐标体系。

turtlexy

绝对坐标体系

可以使用turtle.goto(x,y)方法来让海龟沿着绝对坐标进行运动:

import turtle

turtle.goto(100,100)
turtle.goto(100,-100)
turtle.goto(-100,-100)
turtle.goto(-100,100)
turtle.goto(0,0)

海龟坐标

是以海龟的视角的坐标体系,分为四个方向:

img

海龟坐标体系

使用以下方法可以使海龟在指向的方向上移动、转向等。

turtle.fd(distance)   #前进
turtle.bk(distance)   #后退
turtle.rt(angle)      #右转
turtle.lt(angle)      #左转

空间坐标体系下绘图

import turtle 

turtle.left(45)
turtle.fd(150)
turtle.right(135)
turtle.fd(300)
turtle.left(135)
turtle.fd(150)

通过这几句可以在画布上实现一个斜着的Z字。

turtle角度坐标体系

绝对角度坐标

绝对坐标体系下,使用turtle.seth()方法改变海龟的朝向,但不运动

img

海龟角度坐标

海龟的角度坐标体系下,只分左转和右转两种情况。 使用以下方法来改变它的角度:

turtle.left(angle) #向海龟左边改变运行方向
turtle.right(angle) #向海龟右边改变运行方向

5.RGB色彩体系

三种基础颜色:red green blue构成万物色。 能够覆盖视力能感知的所有颜色。 在计算机RGB色彩体系中,每个基础颜色的取值范围是0-255的整数,或0-1的小数

常用颜色:

英文名称 RGB整数值 RGB小数值 中文名称
white 255,255,255 1,1,1 白色
yellow 255,255,0 1,1,0 黄色
magenta 255,0,255 1,0,1 洋红
cyan 0,255,255 0,1,1 青色
blue 0,0,255 0,0,1 蓝色
black 0,0,0 0,0,0 黑色
purple 160,32,240 0.63,0.13,0.94 紫色

使用turtle.colormode(mode)来调整海龟的颜色,默认采用RGB小数值,可以切换为整数值 mode 小数值模式: 1.0 mode 整数值模式: 255

5.turtle库常用命令

1. 画布(canvas)

画布就是turtle为我们展开用于绘图区域,我们可以设置它的大小和初始位置。

  • 设置画布大小: turtle.screensize(canvwidth=None, canvheight=None, bg=None)

    参数分别为画布的宽(单位像素), 高, 背景颜色。如:

turtle.screensize(800,600, "green")

turtle.screensize() #返回默认大小(400, 300)

  • turtle.setup(width=0.5, height=0.75, startx=None, starty=None)

    参数:width, height: 输入宽和高为整数时, 表示像素; 为小数时, 表示占据电脑屏幕的比例,(startx, starty): 这一坐标表示矩形窗口左上角顶点的位置, 如果为空,则窗口位于屏幕中心。如:

turtle.setup(width=0.6,height=0.6)

turtle.setup(width=800,height=800, startx=100, starty=100)

2. 画笔

2.1 画笔的状态

​ 在画布上,默认有一个坐标原点为画布中心的坐标轴,坐标原点上有一只面朝x轴正方向小乌龟。这里我们描述小乌龟时使用了两个词语:坐标原点(位置),面朝x轴正方向(方向), turtle绘图中,就是使用位置方向描述小乌龟(画笔)的状态。

2.2 画笔的属性

​ 画笔(画笔的属性,颜色、画线的宽度等)

​ 1) turtle.pensize():设置画笔的宽度;

​ 2) turtle.pencolor():没有参数传入,返回当前画笔颜色,传入参数设置画笔颜色,可以是字符串如"green", "red",也可以是RGB 3元组。

​ 3) turtle.speed(speed):设置画笔移动速度,画笔绘制的速度范围[0,10]整数,数字越大越快。

2.3 绘图命令

​ 操纵海龟绘图有着许多的命令,这些命令可以划分为3种:一种为运动命令,一种为画笔控制命令,还有一种是全局控制命令。

(1) 画笔运动命令

命令 简写 说明
forward(distance) fd() 向当前画笔方向移动distance像素长度
backward(distance) bk() 向当前画笔相反方向移动distance像素长度
right(degree) rt() 顺时针移动degree°
left(degree) lt() 逆时针移动degree°
pendown(),down() pd() 移动时绘制图形,缺省时也为绘制
goto(x,y) 将画笔移动到坐标为x,y的位置
penup(),up() pu() 提起笔,不绘制图形,用于另起一个地方绘制
circle(radius, extent=None, steps=None) 画圆,半径为正(负),表示圆心在画笔的左边(右边)画圆
setx( ) 将当前x轴移动到指定位置
sety( ) 将当前y轴移动到指定位置
setheading(angle) 设置当前朝向为angle角度
home() 设置当前画笔位置为原点,朝向东。
dot(r) 绘制一个指定直径和颜色的圆点

(2) 画笔控制命令

命令 说明
fillcolor(colorstring) 绘制图形的填充颜色
color(color1, color2) 同时设置pencolor=color1, fillcolor=color2
filling() 返回当前是否在填充状态
begin_fill() 准备开始填充图形
end_fill() 填充完成
hideturtle() 隐藏画笔的turtle形状
showturtle() 显示画笔的turtle形状

(3) 全局控制命令

命令 说明
clear() 清空turtle窗口,但是turtle的位置和状态不会改变
reset() 清空窗口,重置turtle状态为起始状态
undo() 撤销上一个turtle动作
isvisible() 返回当前turtle是否可见
stamp() 复制当前图形
write(s [,font=("font-name",font_size,"font_type")]) 写文本,s为文本内容,font是字体的参数,分别为字体名称,大小和类型;font为可选项,font参数也是可选项

(4) 其他命令

命令 说明
mainloop()或done() 启动事件循环 -调用Tkinter的mainloop函数。必须是乌龟图形程序中的最后一个语句。
mode(mode=None) 设置乌龟模式(“standard”,“logo”或“world”)并执行重置。如果没有给出模式,则返回当前模式。模式初始龟标题正角度standard向右(东)逆时针logo向上(北)顺时针
delay(delay=None) 设置或返回以毫秒为单位的绘图延迟。
begin_poly() 开始记录多边形的顶点。当前的乌龟位置是多边形的第一个顶点。
end_poly() 停止记录多边形的顶点。当前的乌龟位置是多边形的最后一个顶点。将与第一个顶点相连。
get_poly() 返回最后记录的多边形。
bgcolor() 背景颜色
bgpic() 背景图片
clearscreen() 清屏
resetscreen() 重置
screensize() 屏幕大小
setworldcoordinates() 设置世界坐标系