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格式图像
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的常用图形和参数是很有必要的。