Python 数据可视化的 3 大步骤,你知道吗?
Python实现可视化的三个步骤:
- 确定问题,选择图形
- 转换数据,应用函数
- 参数设置,一目了然
1、首先,要知道我们用哪些库来画图?
matplotlib
Python中最基本的作图库就是matplotlib,是一个最基础的Python可视化库,一般都是从matplotlib上手Python数据可视化,然后开始做纵向与横向拓展。
Seaborn
是一个基于matplotlib的高级可视化效果库,针对的点主要是数据挖掘和机器学习中的变量特征选取,seaborn可以用短小的代码去绘制描述更多维度数据的可视化效果图
其他库还包括
Bokeh(是一个用于做浏览器端交互可视化的库,实现分析师与数据的交互);Mapbox(处理地理数据引擎更强的可视化工具库)等等
本篇文章主要使用matplotlib进行案例分析
第一步:确定问题,选择图形
业务可能很复杂,但是经过拆分,我们要找到我们想通过图形表达什么具体问题。分析思维的训练可以学习《麦肯锡方法》和《金字塔原理》中的方法。
这是网上的一张关于图表类型选择的总结。

在Python中,我们可以总结为以下四种基本视觉元素来展现图形:
- 点:scatter plot 二维数据,适用于简单二维关系;
- 线:line plot 二维数据,适用于时间序列;
- 柱状:bar plot 二维数据,适用于类别统计;
- 颜色:heatmap 适用于展示第三维度;
数据间存在分布,构成,比较,联系以及变化趋势等关系。对应不一样的关系,选择相应的图形进行展示。
第二步:转换数据,应用函数
数据分析和建模方面的大量编程工作都是用在数据准备的基础上的:加载、清理、转换以及重塑。我们可视化步骤也需要对数据进行整理,转换成我们需要的格式再套用可视化方法完成作图。
下面是一些常用的数据转换方法:
- 合并:merge,concat,combine_frist(类似于数据库中的全外连接)
- 重塑:reshape;轴向旋转:pivot(类似excel数据透视表)
- 去重:drop_duplicates
- 映射:map
- 填充替换:fillna,replace
- 重命名轴索引:rename
将分类变量转换‘哑变量矩阵’的get_dummies函数以及在df中对某列数据取限定值等等。
函数则根据第一步中选择好的图形,去找Python中对应的函数。
第三步:参数设置,一目了然
原始图形画完后,我们可以根据需求修改颜色(color),线型(linestyle),标记(maker)或者其他图表装饰项标题(Title),轴标签(xlabel,ylabel),轴刻度(set_xticks),还有图例(legend)等,让图形更加直观。
第三步是在第二步的基础上,为了使图形更加清晰明了,做的修饰工作。具体参数都可以在制图函数中找到。
2、可视化作图基础
Matplotlib作图基础
#导入包
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
Figure和Subplot
matplotlib的图形都位于Figure(画布)中,Subplot创建图像空间。不能通过figure绘图,必须用add_subplot创建一个或多个subplot。
figsize可以指定图像尺寸。
#创建画布
fig = plt.figure()
<Figure size 432x288 with 0 Axes>
#创建subplot,221表示这是2行2列表格中的第1个图像。
ax1 = fig.add_subplot(221)
#但现在更习惯使用以下方法创建画布和图像,2,2表示这是一个2*2的画布,可以放置4个图像
fig , axes = plt.subplots(2,2,sharex=True,sharey=True)
#plt.subplot的sharex和sharey参数可以指定所有的subplot使用相同的x,y轴刻度。

利用Figure的subplots_adjust方法可以调整间距。
subplots_adjust(left=None,bottom=None,right=None,top=None,wspace=None,hspace=None)

颜色color,标记marker,和线型linestyle
matplotlib的plot函数接受一组X和Y坐标,还可以接受一个表示颜色和线型的字符串缩写:‘g–’,表示颜色是绿色green,线型是’–'虚线。也可以使用参数明确的指定。
线型图还可以加上一些标记(marker),来突出显示数据点的位置。标记也可以放在格式字符串中,但标记类型和线型必须放在颜色后面。
plt.plot(np.random.randn(30),color='g',linestyle='--',marker='o')
[<matplotlib.lines.Line2D at 0x8c919b0>]

刻度,标签和图例
plt的xlim、xticks和xtickslabels方法分别控制图表的范围和刻度位置和刻度标签。
调用方法时不带参数,则返回当前的参数值;调用时带参数,则设置参数值。
plt.plot(np.random.randn(30),color='g',linestyle='--',marker='o')
plt.xlim() #不带参数调用,显示当前参数;
#可将xlim替换为另外两个方法试试
(-1.4500000000000002, 30.45)

plt.plot(np.random.randn(30),color='g',linestyle='--',marker='o')
plt.xlim([0,15]) #横轴刻度变成0-15
(0, 15)

设置标题,轴标签,刻度以及刻度标签
fig = plt.figure();ax = fig.add_subplot(1,1,1)
ax.plot(np.random.randn(1000).cumsum())
ticks = ax.set_xticks([0,250,500,750,1000]) #设置刻度值
labels = ax.set_xticklabels(['one','two','three','four','five']) #设置刻度标签
ax.set_title('My first Plot') #设置标题
ax.set_xlabel('Stage') #设置轴标签
Text(0.5,0,'Stage')

添加图例
图例legend是另一种用于标识图标元素的重要工具。可以在添加subplot的时候传入label参数。
fig = plt.figure(figsize=(12,5));ax = fig.add_subplot(111)
ax.plot(np.random.randn(1000).cumsum(),'k',label='one') #传入label参数,定义label名称
ax.plot(np.random.randn(1000).cumsum(),'k--',label='two')
ax.plot(np.random.randn(1000).cumsum(),'k.',label='three')
#图形创建完后,只需要调用legend参数将label调出来即可。
ax.legend(loc='best') #要求不是很严格的话,建议使用loc=‘best’参数来让它自己选择最佳位置
<matplotlib.legend.Legend at 0xa8f5a20>

注解
除标准的图表对象之外,我们还可以自定义添加一些文字注解或者箭头。
注解可以通过text,arrow和annotate等函数进行添加。text函数可以将文本绘制在指定的x,y坐标位置,还可以进行自定义格式
plt.plot(np.random.randn(1000).cumsum())
plt.text(600,10,'test ',family='monospace',fontsize=10)
#中文注释在默认环境下并不能正常显示,需要修改配置文件,使其支持中文字体。具体步骤请自行搜索。
保存图表到文件
利用plt.savefig可以将当前图表保存到文件。例如,要将图表保存为png文件,可以执行
文件类型是根据拓展名而定的。其他参数还有:
- fname:含有文件路径的字符串,拓展名指定文件类型
- dpi:分辨率,默认100 facecolor,edgcolor 图像的背景色,默认‘w’白色
- format:显示设置文件格式(‘png’,‘pdf’,‘svg’,‘ps’,'jpg’等)
- bbox_inches:图表需要保留的部分。如果设置为“tight”,则将尝试剪除图像周围的空白部分
plt.savefig('./plot.jpg') #保存图像为plot名称的jpg格式图像
<Figure size 432x288 with 0 Axes>
3、Pandas中的绘图函数
Matplotlib作图
matplotlib是最基础的绘图函数,也是相对较低级的工具。组装一张图表需要单独调用各个基础组件才行。Pandas中有许多基于matplotlib的高级绘图方法,原本需要多行代码才能搞定的图表,使用pandas只需要短短几行。
我们使用的就调用了pandas中的绘图包。
import matplotlib.pyplot as plt
线型图
Series和DataFrame都有一个用于生成各类图表的plot方法。默认情况下,他们生成的是线型图。
s = pd.Series(np.random.randn(10).cumsum(),index=np.arange(0,100,10))
s.plot() #Series对象的索引index会传给matplotlib用作绘制x轴。
<matplotlib.axes._subplots.AxesSubplot at 0xf553128>

df = pd.DataFrame(np.random.randn(10,4).cumsum(0),columns=['A','B','C','D'])
df.plot() #plot会自动为不同变量改变颜色,并添加图例
<matplotlib.axes._subplots.AxesSubplot at 0xf4f9eb8>

Series.plot方法的参数
- label:用于图表的标签
- style:风格字符串,‘g–’
- alpha:图像的填充不透明度(0-1)
- kind:图表类型(bar,line,hist,kde等)
- xticks:设定x轴刻度值
- yticks:设定y轴刻度值
- xlim,ylim:设定轴界限,[0,10]
- grid:显示轴网格线,默认关闭
- rot:旋转刻度标签
- use_index:将对象的索引用作刻度标签
- logy:在Y轴上使用对数标尺
DataFrame.plot方法的参数
DataFrame除了Series中的参数外,还有一些独有的选项。
- subplots:将各个DataFrame列绘制到单独的subplot中
- sharex,sharey:共享x,y轴
- figsize:控制图像大小
- title:图像标题
- legend:添加图例,默认显示
- sort_columns:以字母顺序绘制各列,默认使用当前顺序
柱状图
在生成线型图的代码中加上kind=‘bar’或者kind=‘barh’,可以生成柱状图或水平柱状图。
fig,axes = plt.subplots(2,1)
data = pd.Series(np.random.rand(10),index=list('abcdefghij'))
data.plot(kind='bar',ax=axes[0],rot=0,alpha=0.3)
data.plot(kind='barh',ax=axes[1],grid=True)
<matplotlib.axes._subplots.AxesSubplot at 0xfe39898>

柱状图有一个非常实用的方法:
利用value_counts图形化显示Series或者DF中各值的出现频率。
比如df.value_counts().plot(kind=‘bar’)
Python可视化的基础语法就到这里,其他图形的绘制方法大同小异。
重点是遵循三个步骤的思路来进行思考、选择、应用。多多练习可以更加熟练。
读者福利:知道你可能对Python感兴趣,便准备了这套python学习资料
对于0基础小白入门:
如果你是零基础小白,想快速入门Python是可以考虑的。 一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以找到适合自己的学习方案
包括:Python永久使用安装包、Python web开发,Python爬虫,Python数据分析,人工智能、软件测试、机器学习等学习教程。带你从零基础系统性的学好Python!
零基础Python学习资源介绍
👉Python学习路线汇总👈
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(全套教程文末领取哈)

👉Python必备开发工具👈

温馨提示:篇幅有限,已打包文件夹,获取方式在:文末
👉Python学习视频600合集👈
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

👉实战案例👈
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

👉100道Python练习题👈
检查学习结果。

👉面试刷题👈



资料领取
上述这份完整版的Python全套学习资料已经上传CSDN官方,朋友们如果需要可以微信扫描下方CSDN官方认证二维码输入“领取资料” 即可领取

相关文章:
Python 数据可视化的 3 大步骤,你知道吗?
Python实现可视化的三个步骤: 确定问题,选择图形转换数据,应用函数参数设置,一目了然 1、首先,要知道我们用哪些库来画图? matplotlib Python中最基本的作图库就是matplotlib,是一个最基础的Python可视…...
CSS基础:盒子模型和浮动
盒子模型 所有HTML元素可以看作盒子,在CSS中,"box model"这一术语是用来设计和布局时使用 CSS盒模型本质上是一个盒子,封装HTML元素。 它包括:外边距(margin),边框(bord…...
OpenHarmony使用Socket实现一个TCP服务端详解
点击获取BearPi-HM_Nano源码 ,以D4_iot_tcp_server为例: 点击查看:上一篇关于socket udp实现的解析 查看 TCPServerTask 方法实现: static void TCPServerTask(void) {//连接WifiWifiConnect("TP-LINK_65A8",...
kafka监控工具安装和使用
1. KafkaOffsetMonitor 该监控是基于一个jar包的形式运行,部署较为方便。只有监控功能,使用起来也较为安全(1)消费者组列表 (2)查看topic的历史消费信息. (3)每个topic的所有parition列表(topic,pid,offset,logSize,lag,owner) (4)对consumer消费情况进…...
近期工作感悟
从应届生变为社畜已经半年了,在这里吐槽一下自己的所想给自己看。 首先是心理层面上的,初期大大增加的压力。 我觉得应届生能够来到大厂的,基本都是在大学有去规划学习,对自己技能比较认可的。比如我在学校自学游戏开发ÿ…...
大数据框架之Hadoop:HDFS(三)HDFS客户端操作(开发重点)
3.1 HDFS客户端环境准备 1.根据自己电脑的操作系统拷贝对应的编译后的hadoop jar包到非中文路径(例如:D:\javaEnv\hadoop-2.77),如下图所示。 2.配置HADOOP_HOME环境变量,如下图所示。 3&#…...
多模式支持无线监控技术:主动式定位、被动式定位
物联网空间信息与数字技术发展至今,已经催生了一大批优秀的践行者。在日常与商业应用中,室内外定位领域依托于这一技术的发展,更是在近几年风光无限。但是并不是说室内定位与室外定位都已经相当成熟,相对来说,室内定位…...
Cy5 Alkyne,1223357-57-0,花青素Cyanine5炔基,氰基5炔烃
CAS号:1223357-57-0 | 英文名: Cyanine5 alkyne,Cy5 Alkyne | 中文名:花青素CY5炔基CASNumber:1223357-57-0Molecular formula:C35H42ClN3OMolecular weight:556.19Purity:95%Appear…...
【MySQL】MySQL 中 WITH 子句详解:从基础到实战示例
文章目录一、什么是 WITH 子句1. 定义2.用途二、WITH 子句的语法和用法1.语法2.使用示例3.优点三、总结"梦想不会碎,只有被放弃了才会破灭。" "Dreams wont break, only abandoned will shatter."一、什么是 WITH 子句 1. 定义 WITH 子句是 M…...
c/c++开发,无可避免的模板编程实践(篇一)
一、c模板 c开发中,在声明变量、函数、类时,c都会要求使用指定的类型。在实际项目过程中,会发现很多代码除了类型不同之外,其他代码看起来都是相同的,为了实现这些相同功能,我们可能会进行如下设计…...
mulesoft MCIA 破釜沉舟备考 2023.02.13.04
mulesoft MCIA 破釜沉舟备考 2023.02.13.03 1. An integration Mule application consumes and processes a list of rows from a CSV file.2. One of the backend systems involved by the API implementation enforces rate limits on the number of request a particle clie…...
Camtasia2023最新版本新功能及快捷键教程
使用Camtasia,您可以毫不费力地在计算机的显示器上录制专业的活动视频。除了录制视频外,Camtasia还允许您从外部源将高清视频导入到录制中。Camtasia的独特之处在于它可以创建包含可单击链接的交互式视频,以生成适用于教室或工作场所的动态视…...
Fabric磁盘扩容后数据迁移
线上环境原来的磁盘比较小,随着业务数据的增多,磁盘需要扩容,因此需要把原来docker数据转移至新的数据盘。 数据迁移 操作系统: centOS 7 docker默认的数据目录为/var/lib/docker 创建一个新的目录/opt/dockerdata&…...
大厂光环下的功能测试,出去面试自动化一问三不知
在一家公司待久了技术能力反而变弱了,原来的许多知识都会慢慢遗忘,这种情况并不少见。一个京东员工发帖吐槽:感觉在大厂快待废了,出去面试问自己接口环境搭建、pytest测试框架,自己做点工太久都忘记了。平时用的时候搜…...
SATA SSD需要NCQ开启吗?
一、故事开篇最近有同学在咨询,SATA SSD是否需要NCQ功能?借此机会,今天我们来聊聊这个比较古老的话题,关于SATA协议的NCQ的故事。首先我们先回顾下SATA与NCQ的历史:2003年,SATA协议1.0问世,传输…...
知识图谱业务落地技术推荐之图神经网络算法库图计算框架汇总
1.PyTorch Geometric: https://pytorch-geometric.readthedocs.io/en/latest/notes/introduction.html PyG是一个基于PyTorch的用于处理不规则数据(比如图)的库,或者说是一个用于在图等数据上快速实现表征学习的框架。它的运行速度很快,训练模型速度可以达到DGL(Deep Gra…...
==与equals()的区别
与equals()的区别 对于 比较的是值是否相等如果作用于基本数据类型的变量,则直接比较其存储的 “值”是否相等;如果作用于引用类型的变量,则比较的是所指向的对象的地址 对于equals方法 equals方法不能作用于基本数据类型的变量ÿ…...
【人工智能】对贝叶斯网络进行吉布斯采样
问题 现要求通过吉布斯采样方法,利用该网络进行概率推理(计算 P(RT|SF, WT)、P2(CF|WT)的概率值)。 原理 吉布斯采样的核心思想为一维一维地进行采样,采某一个维度的时候固定其他的维度,在本次实验中,假…...
Java 面向对象基础
文章目录一、类和对象1. 类的定义2. 对象的使用二、对象内存图三、成员变量和局部变量四、封装1. private 关键字2. this 关键字五、构造方法六、标准类制作一、类和对象 在此之前,我们先了解两个概念,对象和类。 万物皆对象,客观存在的事物…...
RocketMQ源码(21)—ConsumeMessageConcurrentlyService并发消费消息源码
基于RocketMQ release-4.9.3,深入的介绍了ConsumeMessageConcurrentlyService并发消费消息源码。 此前我们学习了consumer消息的拉取流程源码: RocketMQ源码(18)—DefaultMQPushConsumer消费者发起拉取消息请求源码RocketMQ源码(19)—Broker处理Default…...
VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...
中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试
作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...
c++ 面试题(1)-----深度优先搜索(DFS)实现
操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序
一、开发环境准备 工具安装: 下载安装DevEco Studio 4.0(支持HarmonyOS 5)配置HarmonyOS SDK 5.0确保Node.js版本≥14 项目初始化: ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)
宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...
【配置 YOLOX 用于按目录分类的图片数据集】
现在的图标点选越来越多,如何一步解决,采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集(每个目录代表一个类别,目录下是该类别的所有图片),你需要进行以下配置步骤&#x…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
安卓基础(aar)
重新设置java21的环境,临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的: MyApp/ ├── app/ …...
JVM 内存结构 详解
内存结构 运行时数据区: Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器: 线程私有,程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 每个线程都有一个程序计数…...
从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践
作者:吴岐诗,杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言:融合数据湖与数仓的创新之路 在数字金融时代,数据已成为金融机构的核心竞争力。杭银消费金…...
