跟我一起学点数据分析 --第六天:数据可视化(seaborn部)
前文回顾
跟我一起学点数据分析 --第五天:数据可视化(matplotlib部)
数据集
数据可视化部分能用到的数据集在上一篇都已经给啦。
什么x轴、y轴、标题,咱一律不整那些虚的啊,前一篇已经整够多了,复制粘贴的我都累。
seaborn绘图入门
这里先用tips.
直方图 与 密度图
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
tips = pd.read_csv('tips.csv')
ax = sns.displot(tips['total_bill'],kde = True)
# displot 函数默认会绘制直方图和密度图,如果不想看到密度图,把kde设为False,我这边默认是False
plt.show()
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
如果只想看到密度图呢?
本来想把上面的kde参数改成hist参数,但是说hist参数已经被弃用,就是这么无情,并不能在国内的网站上轻易找到答案,反正我烦了一页是没有,还是在国外的一本书上人家随口提了一句。
国内网站关于seaborn的资料太少了,英语咱又不好。。。还不会翻墙。。。
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
tips = pd.read_csv('tips.csv')
ax = sns.kdeplot(tips['total_bill'])
plt.show()
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
频数图
上边第一张就差不多
有区分度么?
ax = sns.distplot(tips['total_bill'],rug = True)
- 1
条形图
ax = sns.countplot('day',data = tips)
- 1
接下来是双变量数据的世界
散点图
ax = sns.regplot(x = 'total_bill',y = 'tip',data = tips)
- 1
同样的,如果你不想看回归线,那怎么办?把fit_reg设置为False
来个更牛逼的,具体自己看:
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
tips = pd.read_csv('tips.csv')
ax = sns.jointplot(x = 'total_bill',y = 'tip',data = tips)
ax.set_axis_labels(xlabel='Total Bill',ylabel='Tip')
ax.fig.suptitle('Joint Plot',fontsize = 10,y = 1.03)
plt.show()
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
为点设置形状和大小
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
tips = pd.read_csv('tips.csv')
sns.regplot(x='total_bill', y='tip', data=tips,marker='o', color='red', scatter_kws={'s':20})
plt.show()
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
更详尽的用法参考上一篇
蜂巢图
散点图适用于比较两个变量,但有时图中的点太多反而会失去意义。
哎,话也不多说,直接看吧:
就改这么一行:hexbin = sns.jointplot(x = 'total_bill',y = 'tip',data = tips,kind = 'hex')
然后就OK啦
2D密度图
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
tips = pd.read_csv('tips.csv')
ax = sns.kdeplot(data = tips['total_bill'],data2 = tips['tip'],shade = True)
plt.show()
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
ax = sns.jointplot(data = tips,x = 'total_bill',y = 'tip',kind = 'kde')
- 1
箱线图
箱线图用来显示多种统计数据的信息,就是describe函数看到的那些·
ax = sns.boxplot(data = tips,y = 'total_bill',x = 'time')
- 1
条形图
条形图我就不说了吧,barplot,自己用。
小提琴图
我说它是箱线图和密度图的合体你信吗?
ax = sns.violinplot(data = tips,y = 'total_bill',x = 'time')
- 1
成对关系
当大部分数据都是阿拉伯数字的时候,可以使用pairplot 把所有的成对关系都描绘出来。
但是直接用的话,会有不少的冗余。
于是·我们采用PairGrid来手动指定图的上半部分和下半部分(一会儿可以去查一下这个函数)
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
tips = pd.read_csv('tips.csv')
pait_grid = sns.PairGrid(tips)
pait_grid = pait_grid.map_upper(sns.regplot)
pait_grid = pait_grid.map_lower(sns.kdeplot)
pait_grid = pait_grid.map_diag(sns.distplot,rug = True) #这个true有什么用呢?只是频数而已
plt.show()
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
多变量数据
如果数据量还不小,你想根据某个变量来进行一波分流操作,怎么操作呢?
比方说我现在要以性别来分流。
ax = sns.violinplot(data = tips,y = 'total_bill',x = 'time',hue='sex')
- 1
这篇就先到这里啦。
最近我发现啊,要验证一篇博客好不好,要看它的实战性能。
所以后面我还会回来的。
文章来源: lion-wu.blog.csdn.net,作者:看,未来,版权归原作者所有,如需转载,请联系作者。
原文链接:lion-wu.blog.csdn.net/article/details/112143468
- 点赞
- 收藏
- 关注作者
评论(0)