Seaborn也是基于python的可视化绘图库,用pip install seaborn进行安装。
第一个例子:
import seaborn as sns import matplotlib.pyplot as plt sns.set()
tips = sns.load_dataset("tips") sns.relplot(x = "total_bill",y="tip",col="time",hue="smoker",style="smoker",size="size",data=tips)
plt.show()
|
程序步骤:
1:import seaborn as sns和import matplotlib.pyplot as plt,这里要还是要引入matplotlib,因为seaborn底层还是嗲用matplotlib.pyplot.show来进行图形显示。
2:sns.set()调用的是matplotlib rcParam用以来设置图形的主题,缩放和调色板等参数,若不加参数则为默认主题。
3:sns.load_dataset()用以引导系统自带数据库,在实际使用中可以用pandas.read_csv()等方式加载。
4:sns.relplot(x = "total_bill",y="tip",col="time",hue="smoker",style="smoker",size="size",data=tips)用于将数据以关系图的方式绘制出来,我们先看下要绘制图形的数据结构,图4.3.1,参数x代表绘制的X轴数据,y代表绘制的Y轴数据,这里X轴绘制的是total_bill,Y轴绘制的是tip数据,col参数代表数据的列分类,这里有Time=Lunch和Time=Dinner两类数据分别被绘制,hue参数将该数据源按照不同颜色分别绘制,style参数用于将数据源分组并产生不同的样式用于显示,size参数将数据源按照尺寸大小绘制在图形中,也可以设定一个元组指定最小和最大值后,在此范围内seaborn会自动设定每个数据用于显示的尺寸,data参数是设置绘图的数据源。
5:plt.show()将绘制的图形显示出来,如图4.3.2
图4.3.1 数据结构
图4.3.2 数据关系图
修改各个参数值可以获得更多显示效果,如改用Time字段进行颜色区分,每列数据按照day字段来区分显示,每行显示2个数据绘图,显示如图4.3.3。
g = sns.relplot(x="total_bill", y="tip", hue="time",col="day", col_wrap=2, data=tips) |
图4.3.3 数据关系图
类似的多图分类数据还可以采用合成一张图来方便比较,将relplot替换为catplot函数,其中参数kind为绘制图用于显示的类型,这里swarm为蜂巢状显示,其它显示类型参数还可以是“point”, “bar”, “strip”, “box”, “violin”, or “boxen”,运行结果如图4.3.4。
sns.catplot(x="day", y="total_bill", hue="time", kind="swarm", data=tips); |
图4.3.4 数据分类对比关系图
seaborn还可以对指定的数据属性进行绘制用以比较,pairplot函数可以指定所有属性进行比对,而jointplot对指定属性进行比对。
iris = sns.load_dataset("iris") #全属性比对,运行结果如图4.3.5 sns.pairplot(data=iris, hue="species") #指定属性比对,运行结果如图4.3.6 sns.jointplot(x="sepal_length", y="petal_length", data=iris) |
图4.3.5 数据全属性比对
图4.3.6 数据指定属性比对
seaborn 开发参考表
关系图 | |
函数说明 | 效果图 |
relplot():绘制关系图 scatterplot():绘制散点图,可以用于分组的情况 lineplot():绘制折线图,可以用于分组的情况 | |
分类图 | |
| |
分布图 | |
| |
回归图 | |
lmplot():通过拟合线性模型去显示数据 | |
矩阵图 | |
heatmap():矩阵热力图 | |
多图网格 | |
FacetGrid():用于绘制条件关系的多图网格 |
高维:通过学习数据可视化我觉得对于运营简直简单多了,李里老师,还有有什么好办法可以将数据的特征自动分析出来直接用于机器学习?这样,我就不用费力学习分析编程了。
李里:呵呵,你总是想不努力就成功啊,不过确实在这方面有所突破,我们来学习一下如何通过数据自动生成模型。