Seaborn介绍:
Seaborn属于Matplotlib的一个高级接口,为我们进行数据的可视化分析提供了极大的方便。
博主是为了入门Kaggle比赛而学习的Seaborn,下面是博主的学习过程,希望可以和大家一起分享。
Step 1:安装Seaborn
首先确定你的电脑已安装以下应用
- Python 2.7+ or Python 3
- Pandas
- Matplotlib
- Seaborn
- Jupyter Notebook(可选)
打开Jupyter Notebook, 过几秒钟会弹出网页窗口Home。
点击右侧的New,新建一个Notebook,弹出一个新的网页窗口,点击上方可命名文件。
Step 2:加载库和数据文件
加载pandas、matplotlib、seaborn。
这里提供了一个数据文件,下载链接为:
Pokemon.csv
用pandas读取数据文件,并显示前五行。
编译后的结果为一个列表。
Step 3:Seaborn的绘图功能
Seaborn最大的优点之一在于其种类繁多的绘图功能,下面我们利用lmplot()函数,用一行代码来绘制散点图。
我们希望x轴显示Attack数据,y轴显示Defense数据,则可以编写代码。
事实上seaborn并没有专门用来绘制散点图的功能,实际上我们用它来拟合和绘制回归线。 这里写图片描述” title=”“>
幸运的是,我们可以通过设置函数的参数来得到我们想要的散点图。用fit_reg = False 移去回归线,用hug参数来用不同颜色显示Pokemon进化阶段的信息。
即刻得到散点图:
从散点图可以看出,所有的数据点都分布在数轴的正半轴,然而散点图的数轴从负数开始的,我们可以对它进行改进。
Step 4:用Matplotlib定制
虽然Seaborn是Matplotlib的一个高级接口,但是我们有时候也需要用到Matplotlib。其中包括设置数轴的范围。
我们利用Matplotlib的ylim()和xlim()函数来设置数轴的范围。
可以得到只显示正部分的散点图。
Step 5:Pandas的作用
尽管这是一个Seaborn教程,pandas依然在实际应用中起到了十分重要的作用。
下面我们根据Pokemon的攻击数据来绘制箱形图。
得到的箱形图:
很好,这是一个良好的开端,但是我们可以移除不需要的几列数据。
- 移除掉Total,因为我们有独立的统计数据。
-
移除掉Stage跟Legendary,因为它们不是攻击统计数据。
我们可以创建一个新的数据集stats_df,满足我们上述的要求。
得到了一个改进了的箱形图。
Step 6: Seaborn 主题
Seaborn的另一个好处就是其恰到好处、开箱即用的风格主题。其默认的主题为“darkgrid”
下一步,我们把主题改为“whitegrid”来创建一个小提琴图
- 小提琴图常常作为箱形图的替代
-
小提琴图通过小提琴的厚度展示了数据的分布,而不仅仅是总结数据。
根据Pokemon的主要类型,我们可以将Attack数据的分布可视化。
可以得到小提琴图,x轴显示的是Pokemon的Type1,y轴显示的是不同Pokemon的攻击数值。
我们很容易就可以看出,Dragon类型常常具备高攻击值,但是不同个体间的差异也很大。
Step 7: 调色盘
Seaborn可以根据我们的需求,来设置颜色。我们可以创建一个python命令列表,用颜色的十六进制数值来设置。数值可以在Bulbapedia中寻找。
就能得到一个颜色重新设置过的小提琴图。
为了能够让数据文件中的151个Pokemon都能够在图中简单展示,我们可以用群集图 swarm plot达到这一目的。
可以得到151个数据点在群集图上的分布,不同点代表不同的Pokemon。
Step 8: 图形重叠
我们已经绘制出了小提琴图和群集图,Seaborn允许我们将这两张图整合在一张图上,步骤如下:
- 首先,我们用Matplotlib设置图形比例。
- 然后,我们绘制小提琴图,用inner = None将小提琴中间的木杆移去。
- 接着,我们绘制群集图,并将数据点的颜色变为黑色。
- 最后,我们可以用Matplotlib设置一个标题。
其中alpha为透明度。
编译后可以得到如下图形。
现在我们可以清晰的看到不同Pokemon的攻击值了。那么我们怎么看其他的数值呢?
Step 9: 融合数据
为了展现其他的数据,我们当然可以重复以上的步骤,绘制多张图。但是我们同样也可以在一张图上表示所有的数据,这时候pandas就派上用场了。
我们可以利用pandas的melt()函数来将一些数据进行融合,这样就可以在不同Pokemon之间直接进行比对,melt()需要导入3个参数,分别为:
- 需要融合的数据列表
- 需要保留的ID变量,其他变量将会被Pandas融合。
- 融合而成的新变量的名字。
显示前五行的数据可以看到,六列数据已经融合成为一列Stat,数值在value一列中显示。而实际上Stat已经包含了原来列表中的六列数据。
我们为已经融合的数据列表melted_df绘制群集图。
就可以得到如下的群集图。x轴为Stat中融合的六个变量,y轴为Stat的值,不同颜色代表不同的Pokemon Type 1。
这张图表有一些细节需要完善:
- 扩大图表。
- 使用split = True 来分隔色调。
- 使用我们自定义的颜色。
- 调整y轴的范围
-
将图例放在右侧。
即可得到一个已经细节完善后的图表。
Step 10: 迷你画廊
10.1-Heatmap
Heatmap可以帮助可视化矩阵状的数据。
10.2-Histogram
Histogram能够绘制变量的数值分布。
可以清楚的看到Pokemon的攻击值的分布。
10.3-Bar Plot
条形图可以帮助分类变量的可视化。
可以清楚的看到不同类型的Pokemon的数量。
10.4-Factor Plot
Factor plots能够根据类别分离图表。
可以得到根据Stage分离的三个图表,分别用不同颜色的点表示不同的Pokemon。
10.5-Density Plot
密度图显示的是两个变量之间的分布。
曲线越密集的地方说明两个变量的关系越近,越稀疏的地方说明关系越远。
10.6-Joint Distribution Plot
联合分布图将散点图和直方图的信息结合起来,提供双变量分布的详细信息。
这里只是介绍了Seaborn常用的绘图功能,还有更强大的功能Example gallery需要我们去学习,去探索。
<link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/markdown_views-ea0013b516.css">
</div>