网易首页 > 网易号 > 正文 申请入驻

Python数据可视化的3大步骤!

0
分享至

大家好,我是小z,也可以叫我阿粥

前排提示,文末送书(R语言相关的好书)

今天来聊聊,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 npimport pandas as pdimport matplotlib.pyplot as plt

Figure和Subplot

matplotlib的图形都位于Figure(画布)中,Subplot创建图像空间。不能通过figure绘图,必须用add_subplot创建一个或多个subplot。

figsize可以指定图像尺寸。


#创建画布fig = plt.figure()#创建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')

刻度,标签和图例

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’参数来让它自己选择最佳位置

注解

除标准的图表对象之外,我们还可以自定义添加一些文字注解或者箭头。

注解可以通过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格式图像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轴。

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

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)0xfe39898>

柱状图有一个非常实用的方法:

利用value_counts图形化显示Series或者DF中各值的出现频率。

比如df.value_counts().plot(kind='bar')

Python可视化的基础语法就到这里,其他图形的绘制方法大同小异。

重点是遵循三个步骤的思路来进行思考、选择、应用。多多练习可以更加熟练。

文章来源:数据分析1480

最后的最后,抽2本北京大学出版社的《

统计分析(以R语言为工具)

,这

本书详细介绍R 语言中数据管理及预处理操作方法,辅以大量实例,通俗易懂,富有趣味性。从数据选择、数据清洗、数据处理到数据可视化,全流程专业讲解,理论基础与实用性并重,值得一看。

这次抽奖方式简单粗暴,本文点赞&在看后,留言点赞排名第1和第3分别送一本,7月8日22:00开奖,祝大家好运~

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
工行、农行、中行、建行、交行,集体宣布→

工行、农行、中行、建行、交行,集体宣布→

城市速递
2026-06-21 20:46:12
保时捷CEO:公司的成本已经失控

保时捷CEO:公司的成本已经失控

观察者网
2026-06-22 14:49:57
连续三年盈利预警后,宝马开始在三大主销市场“勒紧裤腰带”

连续三年盈利预警后,宝马开始在三大主销市场“勒紧裤腰带”

观察者网
2026-06-22 18:38:03
邓丽君去世一个月后,国民党少将谷正文爆料:邓丽君是台湾女间谍

邓丽君去世一个月后,国民党少将谷正文爆料:邓丽君是台湾女间谍

翠羽
2026-06-22 10:55:22
63岁李连杰父亲节晒父女合照,四个女儿全部出镜,长女长得像前妻

63岁李连杰父亲节晒父女合照,四个女儿全部出镜,长女长得像前妻

冷紫葉
2026-06-21 19:19:43
马来西亚女子来中国旅游时嘲笑“中国人不洗澡”,故意在镜头前捂住鼻子讽刺“很臭”,本人道歉:一时冲动,并非刻意安排或策划

马来西亚女子来中国旅游时嘲笑“中国人不洗澡”,故意在镜头前捂住鼻子讽刺“很臭”,本人道歉:一时冲动,并非刻意安排或策划

大风新闻
2026-06-22 12:01:02
美媒:中国试飞全球最强的“飞行雷达”系统,具备先进反隐身能力

美媒:中国试飞全球最强的“飞行雷达”系统,具备先进反隐身能力

零度Military
2026-06-22 12:48:48
吃相太难看,他出轨、背刺亲家的时候,完全忘掉自己是“凤凰男”

吃相太难看,他出轨、背刺亲家的时候,完全忘掉自己是“凤凰男”

嘴角上翘的弧度
2026-06-22 18:23:30
因爱生恨!字母下家基本确定,雄鹿实施报复计划:走了也夺不了冠

因爱生恨!字母下家基本确定,雄鹿实施报复计划:走了也夺不了冠

你的篮球频道
2026-06-22 08:46:52
12个非洲国家集体锁矿!中国440亿投资遇上最狠一刀

12个非洲国家集体锁矿!中国440亿投资遇上最狠一刀

甜心猫女
2026-06-01 16:05:10
泽连斯基用快递退还勋章,波兰还没接住,三个人跟着一起退了

泽连斯基用快递退还勋章,波兰还没接住,三个人跟着一起退了

君笙拂兮啊
2026-06-21 16:53:20
和陈梦秘密领证真相大白后,樊振东近况曝出,难怪会淡出国家队

和陈梦秘密领证真相大白后,樊振东近况曝出,难怪会淡出国家队

乐天闲聊
2026-06-19 18:04:07
手把手教徒弟反被抄家!中企印度遭洗劫,国家新规一招反杀!

手把手教徒弟反被抄家!中企印度遭洗劫,国家新规一招反杀!

52赫兹实验室
2026-06-21 14:28:41
中天科技发布17280芯超大芯数高密度光缆

中天科技发布17280芯超大芯数高密度光缆

证券时报
2026-06-22 18:35:12
安徽9岁女孩点燃野草,父亲救火身亡,家属称被要求灭火才能走

安徽9岁女孩点燃野草,父亲救火身亡,家属称被要求灭火才能走

九方鱼论
2026-06-22 06:22:25
撸猫保命指南:400多项研究告诉你,放养猫可能正把危险病菌带回家

撸猫保命指南:400多项研究告诉你,放养猫可能正把危险病菌带回家

地球观察日记
2026-06-20 23:24:45
发现了没,凡是家里添了孙子,大部分爷爷奶奶都会发生2个变化

发现了没,凡是家里添了孙子,大部分爷爷奶奶都会发生2个变化

大熊欢乐坊
2026-06-21 12:28:13
红十七军军长张涛战场叛变投敌,建国后自首认错最终结局如何

红十七军军长张涛战场叛变投敌,建国后自首认错最终结局如何

磊子讲史
2026-06-18 17:11:27
印不生莫迪,万古如长夜?莫迪执政12年,给印度带来了哪些蜕变?

印不生莫迪,万古如长夜?莫迪执政12年,给印度带来了哪些蜕变?

静夜史君
2026-06-22 00:10:07
对于明天周二A股,我只说4句话:第一,4258点大概率是下一个目标!

对于明天周二A股,我只说4句话:第一,4258点大概率是下一个目标!

趋势清风侠
2026-06-22 18:39:18
2026-06-22 21:36:49
数据不吹牛 incentive-icons
数据不吹牛
趣味+实用数据分析
415文章数 4499关注度
往期回顾 全部

科技要闻

智谱盘中狂飙超40%,市值破万亿港元

头条要闻

月薪5千男子3个月打赏女主播14万一面没见过 父母崩溃

头条要闻

月薪5千男子3个月打赏女主播14万一面没见过 父母崩溃

体育要闻

法国球星祝中国队下届世界杯取得好成绩

娱乐要闻

陪睡陪玩是皮毛,向佐揭内娱暗规则

财经要闻

前美联储主席格林斯潘去世 享年100岁

汽车要闻

华为智驾ADS限时优惠月底结束 7月1日前下订立省3000元

态度原创

艺术
数码
房产
游戏
公开课

艺术要闻

画中女人究竟在等谁?他笔下的柔情,让整个美国都沦陷了!

数码要闻

Steam Machine尚未发布先迎升级 Valve提前植入FSR 4杀手锏

房产要闻

一年时间,36个盘“消失”!海口楼市,罕见“大收缩”!

光荣新作NS2版只能1080P 30帧!PS5实现4K 60掉帧

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版