经过了一段时间的学习之后,我总结了利用python实现可视化的三个步骤:
1、确定问题,选择图形
2、转换数据,应用函数
3、参数设置,一目了然
01
首先,要知道我们用哪些库来画图?
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)等,让图形更加直观。
第三步是在第二步的基础上,为了使图形更加清晰明了,做的修饰工作。具体参数都可以在制图函数中找到。
下面,我总结了实现可视化会用到的一些基础知识
02
可视化作图基础
Matplotlib
#导入包
import numpy as np
import pandas as pdimport
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)
fig.subplots_adjust(wspace=0,hspace=0)#将间距调整为0
#举个栗子
fig , axes = plt.subplots(2,2,sharex=True,sharey=True)
for i in range(2):
for j in range(2):
axes[i,j].hist(np.random.randn(500),bins=50,color='k',alpha=0.5)
fig.subplots_adjust(wspace=0,hspace=0)
颜色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>]