Python可视化教程

1、确定问题,选择图形2、转换数据,应用函数3、参数设置,一目了然

01

首先,要知道我们用哪些库来画图

matplotlib

python中最基本的作图库就是matplotlib,是一个最基础的Python可视化库,一般都是从matplotlib上手Python数据可视化,然后开始做纵向与横向拓展。

Seaborn

是一个基于matplotlib的高级可视化效果库,针对的点主要是数据挖掘和机器学习中的变量特征选取,seaborn可以用短小的代码去绘制描述更多维度数据的可视化效果图。

其他库还包括

确定问题,选择图形

业务可能很复杂,但是经过拆分,我们要找到我们想通过图形表达什么具体问题。分析思维的训练可以学习《麦肯锡方法》和《金字塔原理》中的方法。

这是网上的一张关于图表类型选择的总结。

在python中,我们可以总结为以下四种基本视觉元素来展现图形:

数据间存在分布,构成,比较,联系以及变化趋势等关系。对应不一样的关系,选择相应的图形进行展示。

转换数据,应用函数

数据分析和建模方面的大量编程工作都是用在数据准备的基础上的:加载、清理、转换以及重塑。我们可视化步骤也需要对数据进行整理,转换成我们需要的格式再套用可视化方法完成作图。

下面是一些常用的数据转换方法:

函数则根据第一步中选择好的图形,去找python中对应的函数。

参数设置,一目了然

原始图形画完后,我们可以根据需求修改颜色(color),线型(linestyle),标记(maker)或者其他图表装饰项标题(Title),轴标签(xlabel,ylabel),轴刻度(set_xticks),还有图例(legend)等,让图形更加直观。

第三步是在第二步的基础上,为了使图形更加清晰明了,做的修饰工作。具体参数都可以在制图函数中找到。

下面,我总结了实现可视化会用到的一些基础知识

02

可视化作图基础

Matplotlib

Figure和Subplot

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

figsize可以指定图像尺寸。

颜色color,标记marker,和线型linestyle

matplotlib的plot函数接受一组X和Y坐标,还可以接受一个表示颜色和线型的字符串缩写:'g--',表示颜色是绿色green,线型是'--'虚线。也可以使用参数明确的指定。

线型图还可以加上一些标记(marker),来突出显示数据点的位置。标记也可以放在格式字符串中,但标记类型和线型必须放在颜色后面。

plt的xlim、xticks和xtickslabels方法分别控制图表的范围和,刻度位置和刻度标签。

调用方法时不带参数,则返回当前的参数值;调用时带参数,则设置参数值。

添加图例

图例legend是另一种用于标识图标元素的重要工具。可以在添加subplot的时候传入label参数

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

注解可以通过text,arrow和annotate等函数进行添加。text函数可以将文本绘制在指定的x,y坐标位置,还可以进行自定义格式

保存图表到文件

利用plt.savefig可以将当前图表保存到文件。例如,要将图表保存为png文件,可以执行

plt.savefig('figpath.png')

文件类型是根据拓展名而定的。其他参数还有:

fname含有文件路径的字符串,拓展名指定文件类型dpi分辨率,默认100facecolor,edgcolor图像的背景色,默认'w’白色format显示设置文件格式('png','pdf','svg','ps','jpg'等)bbox_inches:图表需要保留的部分。如果设置为“tight”,则将尝试剪除图像周围的空白部分

plt.savefig('./plot.jpg')#保存图像为plot名称的jpg格式图像Pandas中的绘图函数

matplotlib是最基础的绘图函数,也是相对较低级的工具。组装一张图表需要单独调用各个基础组件才行。Pandas中有许多基于matplotlib的高级绘图方法,原本需要多行代码才能搞定的图表,使用pandas只需要短短几行。

我们使用的

importmatplotlib.pyplotasplt就调用了pandas中的绘图包

线形图

Series和DataFrame都有一个用于生成各类图表的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’,可以生成柱状图或水平柱状图。

柱状图有一个非常实用的方法:利用value_counts图形化显示Series或者DF中各值的出现频率。

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

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

二、实践篇

%matplotlibinlineimportnumpyasnpimportpandasaspdimportmatplotlib.pyplotasplt#导入pltimportseabornassnsimportwarningswarnings.filterwarnings('ignore')#忽略警告加载数据

数据采用kaggle中的共享单车项目(本案例数据经过预处理)下载地址:

比赛提供了跨越两年的每小时共享单车租赁数据,包含天气信息和日期信息。

字段说明

datetime(日期)-hourlydate+timestampseason(季节)-1=spring,2=summer,3=fall,4=winterholiday(是否假日)-whetherthedayisconsideredaholidayworkingday(是否工作日)-whetherthedayisneitheraweekendnorholiday

weather(天气等级)-

1:Clear,Fewclouds,Partlycloudy清澈,少云,多云。

2:Mist+Cloudy,Mist+Brokenclouds,Mist+Fewclouds,Mist雾+阴天,雾+碎云、雾+少云、雾

3:LightSnow,LightRain+Thunderstorm+Scatteredclouds,LightRain+Scatteredclouds小雪、小雨+雷暴+散云,小雨+云

4:HeavyRain+IcePallets+Thunderstorm+Mist,Snow+Fog暴雨+冰雹+雷暴+雾,雪+雾

temp(温度)-temperatureinCelsiusatemp(体感温度)-'feelslike'temperatureinCelsiushumidity(相对湿度)-relativehumiditywindspeed(风速)-windspeedcasual(临时租赁数量)-numberofnon-registereduserrentalsinitiatedregistered(会员租赁数量)-numberofregistereduserrentalsinitiatedcount(总租赁数量)-numberoftotalrentalsdate(日期)-由datetime拆分得到hour(小时)-由datetime拆分得到year(年份)-由datetime拆分得到month(月份)-由datetime拆分得到weeekday(周几)-由datetime拆分得到windspeed_rfr(经过随机森林树填充0值得到的风速)

时段>温度>湿度>年份>月份>季节>天气>风速>工作日>节假日

对特征逐项分析

首先对时段进行分析

提出问题:租赁总量对应时段的变化趋势

适合图形:因为时段属于连续性数值变量,我们可以选择折线图反应变化趋势

转换数据:我们需要一个二维数据框,存储每个时段对应的三个租赁数,租赁数取平均值

应用函数:直接应用plt的plot函数即可完成折线图

对温度进行分析

提出问题:租赁总量对应温度的变化趋势

适合图形:因为温度属于连续性数值变量,我们可以选择折线图反应变化趋势

转换数据:我们需要一个二维数据框,按照温度变化排序,取对应的三个租赁数的平均值

参数设置:只需要设置折线图的标题,其他参数默认

湿度对租赁数量的影响

提出问题:租赁总量对应湿度的变化趋势

适合图形:因为湿度属于连续性数值变量,我们可以选择折线图反应变化趋势

可以观察到在湿度20左右租赁数量迅速达到高峰值,此后缓慢递减。

年份,月份和季节作图方法类似,都采用折线图绘制,这里省略。

查看不同天气对出行情况的影响

我们查看一下天气等级为4的详细情况:

天气状况为4级的只有一天,我们把数据打印出来查看一下

查看会员用户和临时用户在整体用户中的比例

提出问题:查看会员用户和临时用户在整体用户中的比例

适合图形:查看占比,适合用饼图pie

转换数据:需要一个二维数据框,按天数取两种用户的平均值

应用函数:应用plt的plot.pie函数绘制饼图

参数设置:这是数据标签和类别标签

总结

1.要清楚自己想表达什么,有了明确的问题,选择合适的图形,然后按照需求从整体数据中选择自己需要的数据,查阅资料了解函数的参数设置,最后完成图形的绘制。

2.matplotlib是python绘图的基础,也是其他拓展包的基础,认真学习matplotlib的常用图形和参数是很有必要的。

THE END
1.Python练习实例56菜鸟教程Python 100例 题目:画图,学用circle画圆形。 程序分析:无。 程序源代码: 实例(Python 2.0+) #!/usr/bin/python# -*- coding: UTF-8 -*-if__name__=='__main__':fromTkinterimport*canvas=Canvas(width=800,height=600,bg='yellow')canvas.pack(expand=YES,fill=BOTH)k=1j=1foriinrange(0,26):...https://www.runoob.com/python/python-exercise-example56.html
1.十行代码教你用Python绘制线段超百节Python精品视频课程:涵盖Python编程的必备基础知识、高效爬虫技术、以及深入的数据分析技能,让您技能全面升级。 实战案例集锦:精选超过100个实战项目案例,从理论到实践,让您在解决实际问题的过程中,深化理解,提升编程能力。 华为独家Python漫画教程:创新学习方式,以轻松幽默的漫画形式,让您随时随地,利用碎片时间也能...https://blog.csdn.net/biancheng_syz/article/details/144140513
2.Pandas高级教程之:plot画图详解腾讯云开发者社区python中matplotlib是非常重要并且方便的图形化工具,使用matplotlib可以可视化的进行数据分析,今天本文将会详细讲解Pandas中的matplotlib应用。 基础画图 要想使用matplotlib,我们需要引用它: 代码语言:javascript 复制 In [1]: import matplotlib.pyplot as plt 假如我们要从2020年1月1日开始,随机生成365天的数据,然后作图...https://cloud.tencent.com/developer/article/1842965
3.PythonMatplotlib绘图基础详细教程Mysqlmatplotlib是python中用于绘制各种图像的模块,功能十分强大,通常与pandas模块搭配使用,可以生成各种样视的图片,用于数据的分析和展示,下面这篇文章主要给大家介绍了关于Python Matplotlib绘图基础的相关资料,需要的朋友可以参考下 plt是最常用的接口 1. 画图的基本步骤 ...https://m.jb51.net/article/253730.htm
4.Python图像处理教程(Pillow)11画图与添加文字另一个应用可能是用计算好的颜色来填充图像的一部分,例如,梯度甚至是分形图像。请注意,多次调用point来设置大量的像素可能会很慢,所以你最好使用本书中其他地方描述的更有效的像素访问方法。 处理文本 Pillow通过ImaegFont模块(用于选择字体)和ImageDraw模块提供处理文本的功能。 https://www.jianshu.com/p/44470d58729e
5.Python一级等级考试知识点总结(不含turtle画图)物联沃首先,python一级考试都是比较基础的知识,大概包括python的一些常识知识,以及简单的数据类型,类型转换,输入输出函数,运算符,turtle画图等等,难度小,甚至根本不会考循环,判断之类的。废话不多说,上干货,文章可能有点长。表格都比较重要,除了表格之外,考点都用深红色做了标记,只想知道考点的可以快速浏览。 https://www.iotword.com/24303.html
6.9.Pandas高级教程之:plot画图详解程序那些事9. Pandas高级教程之:plot画图详解简介python中matplotlib是非常重要并且方便的图形化工具,使用matplotlib可以可视化的进行数据分析,今天本文将会详细讲解Pandas中的matplotlib应用。基础画图要想使用matplotlib,我们需要引用它:In [1]: import matplotlib.pyplot as plt 假如...http://www.flydean.com/09-python-pandas-plot/
7.python画图holdonmob64ca12f7e7cf的技术博客Python 画图 Holdon 教程 在这篇文章中,我们将学习如何在Python中实现“holdon”功能,这意味着在绘图过程中,可以在同一图形上添加多条线或多个数据集。我们将使用matplotlib库,这是Python中最流行的绘图库之一。这一过程适合初学者,下面的步骤和代码将帮助你顺利完成任务。 https://blog.51cto.com/u_16213463/12162687
8.turtle在本教程中我们将探索海龟绘图的一些基本知识。 启动海龟环境 在Python shell 中,导入 turtle 模块的所有对象: from turtle import * 如果你遇到了 No module named '_tkinter' 错误,则需要在你的系统中安装 Tk 接口包。 基本绘图 让海龟前进 100 步: forward(100) 你应该会看到(最可能的情况,是在你的...https://docs.python.org/zh-cn/3/library/turtle.html
9.python怎么画六边形?如何用Python画一个六边形?如果准备两只turtle,一个逆时针转,一个顺时针转,就可以画出两个六边形。https://www.yutu.cn/question/tiwen_94934.html