数据科学引论-Python之道 第8课数据可视化 一、数据可视化的作用 我们来看看下面的四个数据集,第一个数据集的散点均匀地分布在拟合出来 的回归线的两侧,我们可以认为x1和y1存在着这条回归线所表示的相关性。第 二个数据集的散点构成了一条曲线,但是它的回归线仍然是和第一个数据集的回 归线是一样的。很明显,x2和y2之间的相关性应该不如第一个数据集那么明显。 第三个数据集除了有一个离群值之外,剩下的散点构成了一条很明显的直线,但 是这条直线和所有的数据一起拟合得到的回归线之间有一个夹角。第四个数据集 除了有一个明显的离群值之外,剩下的点构成了一条竖直的直线,但是所有的数 据拟合之后得到的回归线仍然是这一条斜线。 12 10 10 8 6 1012141618 1012141618 X1 X2 12 8 6 6 10121416 18 1012141618 3 这四个数据集单从属性上来说是相同的,也就是说它们具有相同的×的平均
数据科学引论-Pyth瀂瀁 之道 第 8 课 数据可视化 一、数据可视化的作用 我们来看看下面的四个数据集,第一个数据集的散点均匀地分布在拟合出来 的回归线的两侧,我们可以认为 x1 和 y1 存在着这条回归线所表示的相关性。第 二个数据集的散点构成了一条曲线,但是它的回归线仍然是和第一个数据集的回 归线是一样的。很明显,x2 和 y2 之间的相关性应该不如第一个数据集那么明显。 第三个数据集除了有一个离群值之外,剩下的散点构成了一条很明显的直线,但 是这条直线和所有的数据一起拟合得到的回归线之间有一个夹角。第四个数据集 除了有一个明显的离群值之外,剩下的点构成了一条竖直的直线,但是所有的数 据拟合之后得到的回归线仍然是这一条斜线。 这四个数据集单从属性上来说是相同的,也就是说它们具有相同的 x 的平均
值、y的平均值和相同的X和Y的相关系数。它们的拟合回归线最后都是y=0.5x +3,如果不把它们可视化,仅仅从数据具有的属性来观察这些数据集,很难发 现它们之间的差异。所以我们会看到数据可视化非常重要,它有助于我们理解这 些数据。那么,我们何时使用可视化呢?应该在整个数据分析的过程中尽早地使 用,因为数据可视化可以帮助我们看清数据的趋势,帮助我们发现离群值,也有 助于我们彼此分享对数据的见解。 下面我们看一个实际的例子。我们想统计一星期中哪一天,以及这一天中哪 个时间段航班延误的最严重。我们可以绘制出一张热图,这张热图的横坐标表示 一天中的24个小时,纵坐标表示一周中的7天,我们统计每一天在每个小时延 误的航班的数量,就得到了热图的内容。通过这张热图我们就会发现,最热的地 方,也就是颜色最红的地方,就是航班延误数量最多的地方。从这张图中我们一 目了然,就会发现星期五的晚上是航班延误最严重的时候。 Average delay per hours and day? Monday 1 3 FRIDAY NIGHT 6 Sunday 7 91011121314151617181920212223 Hour of Day 下面的例子是在可视化全世界所有国家中女孩在学校中所占的比例。图中颜 色偏蓝表示所占比例偏低,绿色表示女生所占的比例和男生所占的比例基本相当, 红色表示男生所占的比例低于女生所占的比例。我们将各个国家的数据拿到之后 在世界地图上把它们标注出来,就可以很容易地发现几个信息。第一,凌兰岛是 缺失数据的,所以它是黑色,在现实当中我们就可以去不考虑格陵兰岛的具体情
值、y 的平均值和相同的 X 和 Y 的相关系数。它们的拟合回归线最后都是 y = 0.5x + 3,如果不把它们可视化,仅仅从数据具有的属性来观察这些数据集,很难发 现它们之间的差异。所以我们会看到数据可视化非常重要,它有助于我们理解这 些数据。那么,我们何时使用可视化呢?应该在整个数据分析的过程中尽早地使 用,因为数据可视化可以帮助我们看清数据的趋势,帮助我们发现离群值,也有 助于我们彼此分享对数据的见解。 下面我们看一个实际的例子。我们想统计一星期中哪一天,以及这一天中哪 个时间段航班延误的最严重。我们可以绘制出一张热图,这张热图的横坐标表示 一天中的 24 个小时,纵坐标表示一周中的 7 天,我们统计每一天在每个小时延 误的航班的数量,就得到了热图的内容。通过这张热图我们就会发现,最热的地 方,也就是颜色最红的地方,就是航班延误数量最多的地方。从这张图中我们一 目了然,就会发现星期五的晚上是航班延误最严重的时候。 下面的例子是在可视化全世界所有国家中女孩在学校中所占的比例。图中颜 色偏蓝表示所占比例偏低,绿色表示女生所占的比例和男生所占的比例基本相当, 红色表示男生所占的比例低于女生所占的比例。我们将各个国家的数据拿到之后, 在世界地图上把它们标注出来,就可以很容易地发现几个信息。第一,凌兰岛是 缺失数据的,所以它是黑色,在现实当中我们就可以去不考虑格陵兰岛的具体情
况。其次,我们会发现阿富汗和安哥拉颜色偏蓝色,而且比较深,这说明在这两 个国家女孩受教育的比例比较低。 Students in Primary Education:Female in 2014 ercent Female 下面是一个有关加拿大气象站的数据,图中我们看到的从1到6的这些编号 表示气象站所在的位置,这些散点表示每个气象站所监控到的一些气象数据。在 这些气象站中是否有出现了异常活动的气象站呢?我们将4号气象站放大,就 会发现它监测到的绝大多数的观测点的数据都是黄色的,而有两个点是蓝色的, 蓝色和黄色表示数据的差异还比较大,在这种情况下,我们就可以认为这两个值 是异常值。这时我们就要去考虑是不是这两个观测点的装备发生了故障。通过这 种可视化,我们可以很快地定位问题。 异常值 000 异常值 装备故障?
况。其次,我们会发现阿富汗和安哥拉颜色偏蓝色,而且比较深,这说明在这两 个国家女孩受教育的比例比较低。 下面是一个有关加拿大气象站的数据,图中我们看到的从 1 到 6 的这些编号 表示气象站所在的位置,这些散点表示每个气象站所监控到的一些气象数据。在 这些气象站中是否有出现了异常活动的气象站呢?我们将 4 号气象站放大,就 会发现它监测到的绝大多数的观测点的数据都是黄色的,而有两个点是蓝色的, 蓝色和黄色表示数据的差异还比较大,在这种情况下,我们就可以认为这两个值 是异常值。这时我们就要去考虑是不是这两个观测点的装备发生了故障。通过这 种可视化,我们可以很快地定位问题
下面是Facebook给出的一张好友关系的可视化的图,在图中我们可以看到, 越亮的区域表示Facebook的用户越多,每两个朋友之间会有一条连线,所以连 线越密集的地方,说明这两个地区的人们之间的交流会比较密切。 facebook "Visualizing Friendships" Paul Butler 1 下面是一张有关气候变化的图,纵坐标是表示温度异常的指数,横坐标是年 份,我们可以看到在最近这几十年温度在不断升高。 1.0 0.5 0.0 -0.5 1880 1900 1920 1940 1960 1980 2000 2020 YEAR 5outdmae.na89w 下面是一张对人们在互联网上搜索iPhone slow或其他的诸如Android slow、 HTC slow和Samsung slow的数据量的一个对比。我们可以看到,每当iPhone 在发布新产品时,人们在互联网上搜索iPhone slow的数量就会急剧增加。这是
下面是 Faceb瀂瀂濾 给出的一张好友关系的可视化的图,在图中我们可以看到, 越亮的区域表示 Faceb瀂瀂濾 的用户越多,每两个朋友之间会有一条连线,所以连 线越密集的地方,说明这两个地区的人们之间的交流会比较密切。 下面是一张有关气候变化的图,纵坐标是表示温度异常的指数,横坐标是年 份,我们可以看到在最近这几十年温度在不断升高。 下面是一张对人们在互联网上搜索 iPh瀂瀁e s濿瀂w 或其他的诸如 A瀁dr瀂id s濿瀂w、 HTC s濿瀂w 和 Sa瀀su瀁g s濿瀂w 的数据量的一个对比。我们可以看到,每当 iPh瀂瀁e 在发布新产品时,人们在互联网上搜索 iPh瀂瀁e s濿瀂w 的数量就会急剧增加。这是
因为每一次iPhone发布新产品时,老用户都会去关心是不是新产品就意味着速 度会提升很多,有很多的软件只能在新产品上运行,老产品就会显得运行速度慢 了。我们可以看到其他的手机就不存在这样的现象,或者这个现象不太明显。这 说明iPhone这个产品有其特殊的属性。 Searches for"iPhone slow"make huge spikes right after every new iPhone release [OC] submitted 3 months ago by dreamfall17 ee Search term 一nod山w 一heae 2t4 2015 但是我们要注意,可视化虽然可以帮助我们去理解数据,但是我们还是要仔 细的去解释这些数据。例如,在下面这张图中,我们看到了两条曲线,紫色的曲 线是人们统计的患自闭症的人群随年份增加的一条曲线,红色的曲线是有机食物 销量随年份增加的一条曲线,尽管两条曲线增长的趋势非常吻合,但是我们不能 简单地认为是因为大家消费有机食品的数量增加了,导致了自闭症的患者增加, 也就是说我们不能从相关性中直接去推导出因果性。 The real cause of increasing autism prevalence? 25000- -300000 ▲Autism 20000 Organic Food Sales Indiv 200000 15000 vid 10000 .100000 Diagn 5000- r=0.9971P0.0001) 0 Year uGaionAh
因为每一次 iPh瀂瀁e 发布新产品时,老用户都会去关心是不是新产品就意味着速 度会提升很多,有很多的软件只能在新产品上运行,老产品就会显得运行速度慢 了。我们可以看到其他的手机就不存在这样的现象,或者这个现象不太明显。这 说明 iPh瀂瀁e 这个产品有其特殊的属性。 但是我们要注意,可视化虽然可以帮助我们去理解数据,但是我们还是要仔 细的去解释这些数据。例如,在下面这张图中,我们看到了两条曲线,紫色的曲 线是人们统计的患自闭症的人群随年份增加的一条曲线,红色的曲线是有机食物 销量随年份增加的一条曲线,尽管两条曲线增长的趋势非常吻合,但是我们不能 简单地认为是因为大家消费有机食品的数量增加了,导致了自闭症的患者增加, 也就是说我们不能从相关性中直接去推导出因果性
下面是另外一个例子,这张图统计了每一年在美国的高速公路上因为车祸致 死的人数与美国从墨西哥进口的新鲜柠檬的数量之间的关系。我们可以看到,这 些散点经过拟合得到了一条递减的直线,貌似这两者之间存在着负线性相关关系, 但是这种相关关系并不能揭示因果关系,也就是说我们不能认为从墨西哥进口的 新鲜柠檬的数量增加,可以降低高速公路上因事故致死的人数。 16 1996 R2=0.97 15.8 1997 15.6 15.4 MyB!H 1998● ● 1999 15.2 Sources: 15 U.S.NHTSA.DOT HS 810 780 U.S.Department of Agriculture 2000 14.8 200 250 300 350 400 450 500 550 Fresh Lemons Imported to USA from Mexico (Metric Tons) 二、数据可视化的基本类型 最常见的就是直方图。直方图分成很多种,第一种是可以统计一列数据的直 方图,例如Salary,我们将整列Salary的取值范围划分成很多小的范围,然后对 每一个小的范围统计数据行的数量,或者是统计数据行的数量所在整个数据集中 所占的百分比,这就类似于我们之前谈到的分类统计。 Salary Person 1 20000 Person 2 40000 15 Person 3 40000 Person 4 40000 10. Person 6 60000 Person 7 80000 Person 8 100000 20.000 40,000 60.00080,000100.000120,000 140.000 Salary
下面是另外一个例子,这张图统计了每一年在美国的高速公路上因为车祸致 死的人数与美国从墨西哥进口的新鲜柠檬的数量之间的关系。我们可以看到,这 些散点经过拟合得到了一条递减的直线,貌似这两者之间存在着负线性相关关系, 但是这种相关关系并不能揭示因果关系,也就是说我们不能认为从墨西哥进口的 新鲜柠檬的数量增加,可以降低高速公路上因事故致死的人数。 二、数据可视化的基本类型 最常见的就是直方图。直方图分成很多种,第一种是可以统计一列数据的直 方图,例如 Sa濿ary,我们将整列 Sa濿ary 的取值范围划分成很多小的范围,然后对 每一个小的范围统计数据行的数量,或者是统计数据行的数量所在整个数据集中 所占的百分比,这就类似于我们之前谈到的分类统计
这张直方图表示了人们的收入所占的比例,从中可以看到大多数人收入都介 于2万到4万之间,高收入的人群越来越少。稍微复杂一些的直方图可以表示两 个维度,例如横坐标表示的是性别,纵坐标表示的是薪水,现在统计性别和薪水 之间的关系,从中我们可以看到,男性的收入比女性要高很多。 50,000- 40,000 30.000 Salary Female 26000 20.000 Male 41000 10,00 Fem Male gender 再复杂一些,我们可以对三个维度的数据进行统计,例如除了像前面统计男 性和女性的收入比之外,我们还可以增加岗位。从这张图中我们可以看到, Manager的薪水收入明显高于其他两个岗位,而且无论是哪个岗位,男性的收入 都比女性要高。 70,000 gender 60,000 Female 50,000 40,000 Salary 30.000 Male Female Clerical 31000 25000 20,.000 Custodial 30000 NA Manager 68000 48000 10.D00 Clerica Custodial Manage jobcat 第二种形式的图是折线图,折线图就是在数据集中很多零散的点上建立连接 这样绘制出来的图就是一个折线图。还可以绘制饼图,饼图可以一目了然地看到 数据集中各种不同分类所占的比例
这张直方图表示了人们的收入所占的比例,从中可以看到大多数人收入都介 于 2 万到 4 万之间,高收入的人群越来越少。稍微复杂一些的直方图可以表示两 个维度,例如横坐标表示的是性别,纵坐标表示的是薪水,现在统计性别和薪水 之间的关系,从中我们可以看到,男性的收入比女性要高很多。 再复杂一些,我们可以对三个维度的数据进行统计,例如除了像前面统计男 性和女性的收入比之外,我们还可以增加岗位。从这张图中我们可以看到, Ma瀁ager 的薪水收入明显高于其他两个岗位,而且无论是哪个岗位,男性的收入 都比女性要高。 第二种形式的图是折线图,折线图就是在数据集中很多零散的点上建立连接, 这样绘制出来的图就是一个折线图。还可以绘制饼图,饼图可以一目了然地看到 数据集中各种不同分类所占的比例
70,000 gender 60,000 50,000 90,000- Salary 30.000 Male Female Clerical 31000 25000 Custodial 30000 NA Manager 68000 48000 Manager Revenue Americas Asia Pacific Central Europe Northern Europe Southern Europe 下面是一张更复杂的图,它的横坐标表示销售的收入,纵坐标表示销量,每 一个圆的圆心所在的坐标表示这一种商品销售的收入和数量,圆的面积表示的是 这种商品的净利润。从中可以看到,某些商品的利润很高,有些利润很低,但是 有些商品的销售量很少,它的收入却不是很低,证明它的单价比较高。这张图可 以从三个维度来刻画,这个数据集分别是收入、 销售量以及利润。 Product line ● ● ● Revenue Quantity Profit Camping Equipment Mountain Equipment Personal Accessonie 5 Outdoor Protection 200 Golf Equipment 50 2,000 2500
下面是一张更复杂的图,它的横坐标表示销售的收入,纵坐标表示销量,每 一个圆的圆心所在的坐标表示这一种商品销售的收入和数量,圆的面积表示的是 这种商品的净利润。从中可以看到,某些商品的利润很高,有些利润很低,但是 有些商品的销售量很少,它的收入却不是很低,证明它的单价比较高。这张图可 以从三个维度来刻画,这个数据集分别是收入、销售量以及利润
还有很多例子是希望在地图上进行可视化的。例如,下面这张图就给出了星 巴克各个门店在世界上的位置的信息。 大厦分店,海口市,46CN rand tore tore wnership itate/Province Country Postcode hone Timezone Longitude Latitud NumberI Name Address Number 47370 censed AD D500 76818720 GMT+1:00 257954 153 42.51 1 Street 22331 212325 Drive ,N GMT+04:00 Asia/Duba 55.47 25.42 Thru 三、数据可视化案例美国人的死因分析 让我们通过一个notebook来了解数据是如何被可视化的。这个notebook在 分析美国人的死因,所使用的数据集是美国疾病控制和预防中心提供的一份有关 从1999年到2015年的死亡人员的信息数据,这些数据当中包含了死亡年龄、 死亡的死因、死亡人员的性别和种族,以及所处的城市等等。我们希望对这些数 据的分析可以回答下面三个问题,第一,美国人最大的死因是什么?第二,男人 是否比女人更容易死亡?死亡与年龄是否相关?第三,随着时间的推移,哪些死 因会变得更加流行,而那些死因变得更加少见了。 在这个notebook中,我们是在学习如何进行数据可视化,我们需要 matplotlib这个库的支持,所以要先加载这个库,然后加载数据数据,可以从指 定URL处下载,下载后把它加载到DataFrame中。我们可以来看一看这些数据, 例如,它的前10行。可以看到,数据集中包含了用中文描述的死因,以及在集 控中心的编号和死亡的人员的年龄、性别、死亡的年份等等信息
还有很多例子是希望在地图上进行可视化的。例如,下面这张图就给出了星 巴克各个门店在世界上的位置的信息。 三、数据可视化案例 I - 美国人的死因分析 让我们通过一个 瀁瀂teb瀂瀂濾 来了解数据是如何被可视化的。这个 瀁瀂teb瀂瀂濾 在 分析美国人的死因,所使用的数据集是美国疾病控制和预防中心提供的一份有关 从 1999 年到 2015 年的死亡人员的信息数据,这些数据当中包含了死亡年龄、 死亡的死因、死亡人员的性别和种族,以及所处的城市等等。我们希望对这些数 据的分析可以回答下面三个问题,第一,美国人最大的死因是什么?第二,男人 是否比女人更容易死亡?死亡与年龄是否相关?第三,随着时间的推移,哪些死 因会变得更加流行,而那些死因变得更加少见了。 在这个 瀁瀂teb瀂瀂濾 中,我们是在学习如何进行数据可视化,我们需要 瀀at瀃濿瀂t濿ib 这个库的支持,所以要先加载这个库,然后加载数据数据,可以从指 定 URL 处下载,下载后把它加载到 DataFra瀀e 中。我们可以来看一看这些数据, 例如,它的前 10 行。可以看到,数据集中包含了用中文描述的死因,以及在集 控中心的编号和死亡的人员的年龄、性别、死亡的年份等等信息
载入matplotlib库 1n【11: fenable grapha to be diaplayed in notebooks smatplotlib inline reload(sys) python2 sys.setdofaultencoding('GBK')varning may display but 1e OK out[1]: 获得数据 从下面的链接中下载deaths.cy In ]#inux fwget --output-document /resources/data/deatha.csv https://ibm.box.com/shared/static/10iexjaa280qzdxcdtu98xlv51h 读取deaths.csw文件内容: ng-'GaK' 很好现在数据都在变量df内了 理解数据 前10行: In【3]:df.head(310) 0ut3]: Cause CauseCN Code-ICD-10-113 Age Gender Year Deaths Population Crude Rate 0 沙门氏萄悬染 G113-001 10 20050 1956682 Unmiable 沙门氏菌感染 GR113-001 0 20101 1929677 沙门氏菌暴染 GR13-001 20153 1942904 3 Saimonela infections 沙门氏菊懸染 GR113-001 20060 1950494 4 沙门氏萄蒸染 GR113-001 20100 1947217 沙门氏菌感染 GR113-001 F 20150 1939269 6Saimonella infections 沙门氏葡暴染 GR113-001 2 20050 1932337 Unreliable 7Salmonela infections 沙门氏葡瑟染 GR113-001 2 20100 2004731 Urriabie 8Salmonella infections 沙门氏菌藤染 GR113-001 20150 1939979 Unreliable 9Salmonela infections 沙门氏菌綦染 G113-001 3 20050 1930395 Unreliable 我们可以对死亡的年龄做一个汇总,可以看到,最大的死亡人员有100岁, 最小的是刚出生的婴儿,平均年龄是50岁,我们还可以看看数据集中到底包含 了哪些年份,可以看到数据集里面包含了死亡年份有2005年、2010年、2015 年。我们还可以看看性别是否只包含男女两种,我们看到Gender这一列确实只 包含F和M这两个取值
我们可以对死亡的年龄做一个汇总,可以看到,最大的死亡人员有 100 岁, 最小的是刚出生的婴儿,平均年龄是 50 岁,我们还可以看看数据集中到底包含 了哪些年份,可以看到数据集里面包含了死亡年份有 2005 年、2010 年、2015 年。我们还可以看看性别是否只包含男女两种,我们看到 Ge瀁der 这一列确实只 包含 F 和 M 这两个取值