跟我一起学点数据分析 --第五天:数据可视化(matplotlib部)
数据可视化部分能用到的数据集在上一篇都已经给啦。
什么x轴、y轴、标题,咱一律不整那些虚的啊,前一篇已经整够多了,复制粘贴的我都累。
这里先用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()
如果只想看到密度图呢?
本来想把上面的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()
上边第一张就差不多
有区分度么?
ax = sns.distplot(tips['total_bill'],rug = True)
ax = sns.countplot('day',data = tips)
接下来是双变量数据的世界
ax = sns.regplot(x = 'total_bill',y = 'tip',data = tips)
同样的,如果你不想看回归线,那怎么办?把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()
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()
散点图适用于比较两个变量,但有时图中的点太多反而会失去意义。
哎,话也不多说,直接看吧:
就改这么一行:hexbin = sns.jointplot(x = 'total_bill',y = 'tip',data = tips,kind = 'hex')
然后就OK啦
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()
ax = sns.jointplot(data = tips,x = 'total_bill',y = 'tip',kind = 'kde')
箱线图用来显示多种统计数据的信息,就是describe函数看到的那些·
ax = sns.boxplot(data = tips,y = 'total_bill',x = 'time')
条形图我就不说了吧,barplot,自己用。
我说它是箱线图和密度图的合体你信吗?
ax = sns.violinplot(data = tips,y = 'total_bill',x = 'time')
当大部分数据都是阿拉伯数字的时候,可以使用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()
如果数据量还不小,你想根据某个变量来进行一波分流操作,怎么操作呢?
比方说我现在要以性别来分流。
ax = sns.violinplot(data = tips,y = 'total_bill',x = 'time',hue='sex')
这篇就先到这里啦。
最近我发现啊,要验证一篇博客好不好,要看它的实战性能。
所以后面我还会回来的。