用Seaborn做数据可视化
Seaborn在Matplotlib的基础上开发了一套API,为默认的图形样式和颜色提供了理智的选择,为常用的统计图形定义了许多简单的高级函数,并与Pandas DataFrame的功能有机结合。Seaborn不仅有许多高级的画图功能,而且可以改写Matplotlib的默认参数,从而用简单的Matplotlib脚本获得更好的效果。Seaborn的主要思想是用高级命令为统计数据探索和统计模型拟合创建各种图形。
频次直方图
# Seaborn下的频次直方图
data = np.random.multivariate_normal([0, 0], [[5,2],[2,2]], size=2000)
data = pd.DataFrame(data, columns=['x', 'y'])
for col in 'xy':
plt.hist(data[col], normed=True, alpha=0.5)
KDE
#用KDE获取变量分布的平滑估计
for col in 'xy':
sns.kdeplot(data[col], shade=True)
#用displot让频次直方图和KDE结合起来
sns.distplot(data['x'])
sns.distplot(data['y'])
#如果想kdeplot输入的是二维数据集,那么就可以获得一个二维数据的可视化图
sns.kdeplot(data)
联合分布图
#用sns.jointplot可以同时看到两个变量的联合分布与单变量的独立分布
with sns.axes_style('white'):
sns.jointplot('x', 'y', data, kind='reside')
#jointplot函数kind还有几个可选的类型——hex、reside、reg、scatter
#用六边形画得联合分布图
with sns.axes_style('white'):
sns.jointplot('x', 'y', data, kind='hex')
#联合分布图也可以自动进行KDE和回归
sns.jointplot('x', 'y', data, kind='reg')
矩阵图
#画出所有变量中任意两个变量之间的图形
iris = sns.load_dataset('iris')
sns.pairplot(iris, hue='species', size=2.5)
分面频次直方图
#统计各个数据子集的频次直方图
tips = sns.load_dataset('tips')
tips['tip_pct'] = 100 * tips['tip'] / tips['total_bill']
grid = sns.FacetGrid(tips, row='sex', col='time', margin_titles=True)
grid.map(plt.hist, 'tip_pct', bins=np.linspace(0, 40, 25));
盒型图
#盒型图也是对数据子集进行可视化的方法,借助它可以观察一个参数在另一个参数
#间隔中的分布情况
with sns.axes_style(style='ticks'):
g = sns.factorplot('day', 'total_bill', 'sex', data=tips, kind='box')
g.set_axis_labels('Day', 'Total Bill')
扫描二维码关注公众号,回复:
2849800 查看本文章
条形图
#时间序列数据可以用sns.factorplt画出条形图。
planets = sns.load_dataset('planets')
with sns.axes_style('white'):
g = sns.factorplot('year', data=planets, aspect=2, kind='count', color='steelblue')
g.set_xticklabels(step=5)
#对比不同方法(method参数)发现行星的数量
with sns.axes_style('white'):
g = sns.factorplot('year', data=planets, aspect=4.0, kind='count',
hue='method', order=range(2001,2015))
g.set_ylabels('Number of Planets Discovered')