【AICon】探索八个行业创新案例,教你在教育、金融、医疗、法律等领域实践大模型技术! >>> 了解详情
写点什么

Python 数据可视化的 10 种技能

  • 2019-02-13
  • 本文字数:2995 字

    阅读完需:约 10 分钟

Python数据可视化的10种技能

内容来自:极客时间专栏《数据分析实战45讲》


如果你想要用 Python 进行数据分析,就需要在项目初期开始进行探索性的数据分析,这样方便你对数据有一定的了解。其中最直观的就是采用数据可视化技术,这样,数据不仅一目了然,而且更容易被解读。同样在数据分析得到结果之后,我们还需要用到可视化技术,把最终的结果呈现出来。

可视化视图都有哪些?

按照数据之间的关系,我们可以把可视化视图划分为 4 类,它们分别是比较、联系、构成和分布。我来简单介绍下这四种关系的特点:


  • 比较:比较数据间各类别的关系,或者是它们随着时间的变化趋势,比如折线图;

  • 联系:查看两个或两个以上变量之间的关系,比如散点图;

  • 构成:每个部分占整体的百分比,或者是随着时间的百分比变化,比如饼图;

  • 分布:关注单个变量,或者多个变量的分布情况,比如直方图。


同样,按照变量的个数,我们可以把可视化视图划分为单变量分析和多变量分析。


  • 单变量分析指的是一次只关注一个变量。比如我们只关注“身高”这个变量,来看身高的取值分布,而暂时忽略其他变量。

  • 多变量分析可以让你在一张图上可以查看两个以上变量的关系。比如“身高”和“年龄”,你可以理解是同一个人的两个参数,这样在同一张图中可以看到每个人的“身高”和“年龄”的取值,从而分析出来这两个变量之间是否存在某种联系。


可视化的视图可以说是分门别类,多种多样,今天我主要介绍常用的 10 种视图,包括了散点图、折线图、直方图、条形图、箱线图、饼图、热力图、蜘蛛图、二元变量分布、成对关系。

1.散点图

散点图的英文叫做 scatter plot,它将两个变量的值显示在二维坐标中,非常适合展示两个变量之间的关系。当然,除了二维的散点图,我们还有三维的散点图。


我在上一讲中给你简单介绍了下 Matplotlib 这个工具,在 Matplotlib 中,我们经常会用到 pyplot 这个工具包,它包括了很多绘图函数,类似 Matlab 的绘图框架。在使用前你需要进行引用:



在工具包引用后,画散点图,需要使用 plt.scatter(x, y, marker=None)函数。x、y 是坐标,marker 代表了标记的符号。比如“x”、“>”或者“o”。选择不同的 marker,呈现出来的符号样式也会不同,你可以自己试一下。


下面三张图分别对应“x”“>”和“o”。



除了 Matplotlib 外,你也可以使用 Seaborn 进行散点图的绘制。在使用 Seaborn 前,也需要进行包引用:



在引用 seaborn 工具包之后,就可以使用 seaborn 工具包的函数了。如果想要做散点图,可以直接使用 sns.jointplot(x, y, data=None, kind=‘scatter’)函数。其中 x、y 是 data 中的下标。data 就是我们要传入的数据,一般是 DataFrame 类型。kind 这类我们取 scatter,代表散点的意思。当然 kind 还可以取其他值,这个我在后面的视图中会讲到,不同的 kind 代表不同的视图绘制方式。


好了,让我们来模拟下,假设我们的数据是随机的 1000 个点。



我们运行一下这个代码,就可以看到下面的视图(第一张图为 Matplotlib 绘制的,第二张图为 Seaborn 绘制的)。其实你能看到 Matplotlib 和 Seaborn 的视图呈现还是有差别的。Matplotlib 默认情况下呈现出来的是个长方形。而 Seaborn 呈现的是个正方形,而且不仅显示出了散点图,还给了这两个变量的分布情况。


Matplotlib 绘制:



Seaborn 绘制:



扩展阅读:


(小手)数据可视化:掌握数据领域的万金油技能

2.折线图

折线图可以用来表示数据随着时间变化的趋势。


在 Matplotlib 中,我们可以直接使用 plt.plot()函数,当然需要提前把数据按照 X 轴的大小进行排序,要不画出来的折线图就无法按照 X 轴递增的顺序展示。


在 Seaborn 中,我们使用 sns.lineplot (x, y, data=None)函数。其中 x、y 是 data 中的下标。data 就是我们要传入的数据,一般是 DataFrame 类型。


这里我们设置了 x、y 的数组。x 数组代表时间(年),y 数组我们随便设置几个取值。下面是详细的代码。



然后我们分别用 Matplotlib 和 Seaborn 进行画图,可以得到下面的图示。你可以看出这两个图示的结果是完全一样的,只是在 seaborn 中标记了 x 和 y 轴的含义。


3.直方图

直方图是比较常见的视图,它是把横坐标等分成了一定数量的小区间,这个小区间也叫作“箱子”,然后在每个“箱子”内用矩形条(bars)展示该箱子的箱子数(也就是 y 值),这样就完成了对数据集的直方图分布的可视化。


在 Matplotlib 中,我们使用 plt.hist(x, bins=10)函数,其中参数 x 是一维数组,bins 代表直方图中的箱子数量,默认是 10。


在 Seaborn 中,我们使用 sns.distplot(x, bins=10, kde=True)函数。其中参数 x 是一维数组,bins 代表直方图中的箱子数量,kde 代表显示核密度估计,默认是 True,我们也可以把 kde 设置为 False,不进行显示。核密度估计是通过核函数帮我们来估计概率密度的方法。


这是一段绘制直方图的代码。



我们创建一个随机的一维数组,然后分别用 Matplotlib 和 Seaborn 进行直方图的显示,结果如下,你可以看出,没有任何差别,其中最后一张图就是 kde 默认为 Ture 时的显示情况。


4.热力图

热力图,英文叫 heat map,是一种矩阵表示方法,其中矩阵中的元素值用颜色来代表,不同的颜色代表不同大小的值。通过颜色就能直观地知道某个位置上数值的大小。另外你也可以将这个位置上的颜色,与数据集中的其他位置颜色进行比较。


热力图是一种非常直观的多元变量分析方法。


我们一般使用 Seaborn 中的 sns.heatmap(data)函数,其中 data 代表需要绘制的热力图数据。


这里我们使用 Seaborn 中自带的数据集 flights,该数据集记录了 1949 年到 1960 年期间,每个月的航班乘客的数量。



通过 seaborn 的 heatmap 函数,我们可以观察到不同年份,不同月份的乘客数量变化情况,其中颜色越浅的代表乘客数量越多,如下图所示:


成对关系

如果想要探索数据集中的多个成对双变量的分布,可以直接采用 sns.pairplot()函数。它会同时展示出 DataFrame 中每对变量的关系,另外在对角线上,你能看到每个变量自身作为单变量的分布情况。它可以说是探索性分析中的常用函数,可以很快帮我们理解变量对之间的关系。


pairplot 函数的使用,就好像我们对 DataFrame 使用 describe()函数一样方便,是数据探索中的常用函数。


这里我们使用 Seaborn 中自带的 iris 数据集,这个数据集也叫鸢尾花数据集。鸢尾花可以分成 Setosa、Versicolour 和 Virginica 三个品种,在这个数据集中,针对每一个品种,都有 50 个数据,每个数据中包括了 4 个属性,分别是花萼长度、花萼宽度、花瓣长度和花瓣宽度。通过这些数据,需要你来预测鸢尾花卉属于三个品种中的哪一种。



这里我们用 seaborn 中的 pairplot 函数来对数据集中的多个双变量的关系进行探索,如下图所示。从图上你能看出,一共有 sepal_length、sepal_width、petal_length 和 petal_width4 个变量,它们分别是花萼长度、花萼宽度、花瓣长度和花瓣宽度。


下面这张图相当于这 4 个变量两两之间的关系。比如矩阵中的第一张图代表的就是花萼长度自身的分布图,它右侧的这张图代表的是花萼长度与花萼宽度这两个变量之间的关系。



关于本次 Python 可视化的学习,我希望你能掌握:


  • 视图的分类,以及可以从哪些维度对它们进行分类;

  • 十种常见视图的概念,以及如何在 Python 中进行使用,都需要用到哪些函数;

  • 需要自己动手跑一遍案例中的代码,体验下 Python 数据可视化的过程。


戳我查看>>>「另 5 种可视化技能」


戳我测试>>>你的数据分析能力:


三道数据分析测试题:基础+进阶+场景


2019-02-13 13:584996

评论

发布
暂无评论
发现更多内容

哪家强?Bitget Wallet vs Metamask 从安全性能角度全方位 PK

股市老人

文心一言 VS 讯飞星火 VS chatgpt (111)-- 算法导论10.2 2题

福大大架构师每日一题

福大大架构师每日一题

GitHub爆赞,啃完这份500多页Java多线程笔记,阿里入职在望

程序员万金游

#java #程序员 #学习 #并发 #多线程

蓝易云:SSD固态硬盘和HDD机械硬盘服务器区别

百度搜索:蓝易云

Linux 运维 SSD 云服务器 HDD

Mac具有AI技术的创意图像编辑器Luminar Neo

展初云

Mac软件 AI技术图像编辑 图像编辑工具

不同MBTI的HR是怎样做招聘的?

用友BIP

数智招聘

文本快速输入工具 Rocket Typist pro最新激活版

mac大玩家j

Mac软件 文本输入工具

Swap去中心化交易所/系统开发技术/Swap智能合约交易所源码搭建

V\TG【ch3nguang】

语音识别技术:从传统到现代的飞跃

来自四九城儿

合约跟单/永续合约系统开发/交割合约/现货交易/Python技术编写

V\TG【ch3nguang】

交易所开发(海外版)/交易所系统开发(案例详细)/交易所系统源码及demo

V\TG【ch3nguang】

简洁的看图软件 XnViewMP激活中文最新版

胖墩儿不胖y

Mac软件 看图软件 图像编辑器

DevEco Hvigor高效编译,构建过程新秘籍

HarmonyOS开发者

HarmonyOS

运营SOP,高效运营的核心打法

用友BIP

数智营销

语音识别技术的优化与发展趋势

来自四九城儿

Python 集合(Sets)2

小万哥

Python 程序员 软件 后端 开发

Mac平台视频后期合成和特效制作软件:Nuke 15

展初云

Mac Mac软件 视频后期制作 nuke

GTD任务管理器Omnifocus Pro 3,合理规划自己的时间

展初云

Mac GTD 待办记事软件

BigTime会是链游新的领航员吗?

币离海

蓝易云:linux iptables安全技术与防火墙

百度搜索:蓝易云

云计算 Linux iptables 云服务器

软件开发人员 Kubernetes 入门指南|Part 2

SEAL安全

软件开发 kubernetes 运维 企业号10月PK榜

合约跟单系统开发/跟单量化交易机器人/合约交易技术开发详情

V\TG【ch3nguang】

合约量化/现货交易/合约跟单/秒合约/系统开发技术分析

V\TG【ch3nguang】

数字时代的自我呈现:探索个人形象打造的创新工具——FaceChain深度学习模型工具

汀丶人工智能

人工智能 计算机视觉 图像生成

基于 ACK Fluid 的混合云优化数据访问(五):自动化跨区域中心数据分发

阿里巴巴云原生

阿里云 云原生 ACK

【评测有奖】参加 SAE 2.0 产品评测,赢 Airpods 2 大奖!

阿里巴巴云原生

阿里云 Serverless 云原生

财务共享中心的人员如何进行“选、育、用、留”?

用友BIP

财务共享

合约跟单/交易所开发方案,合约跟单/交易所系统dapp开发(稳定版)丨源码规则详细

V\TG【ch3nguang】

Linux和UNIX的关系及区别

智趣匠

全网最细-深度解析 Istio Ambient Mesh 流量路径

阿里巴巴云原生

阿里云 云原生 服务网格

CSS小技巧之绘制心形图案

南城FE

CSS css3 前端 心形

Python数据可视化的10种技能_数据库_陈旸_InfoQ精选文章