用pandas和seaborn绘图

本文介绍了如何利用pandas的crosstab功能和seaborn库进行数据绘图,包括条形图、直方图、密度图、散布图、线性回归图以及箱型图。通过实例展示了如何进行数据规格化、创建不同类型的图表,并利用hue、col、row参数进行多维度可视化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

0.

用plt绘图其实不是上选,可以直接用pd绘图

 

1.

 

2.

这里边有一个例子,说的是

party_counts=pd.crosstab(tips['day'],tips['size'])

本身一个竖着的表格,好多列,其中两列,day是周一到周五等等  size是几个人来吃饭 

然后就变成  提出这两个内容,把后边的size作为表头  然后左边的索引变成了day 周12345

然后内容是计数,记录对应size的周几 分别出现了多少次

然后还有

party_pcts=party_counts.div(party_counts.sum(1),axis=0)

这个叫规格化 就是让他们的总和等于1

tips['tip_pct']=tips['tip']/(tips['total_bill'] - tips['tip'])

这个新加的内容就会出现在df的最右边 

另 这个tips 跟小费的tip没有关系!!!tips是这个df最开始的名字

sns.barplot(x='tip_pct',y='day',data=tips,orient=‘h’)

弹出来的图是横坐标是不到1的,纵坐标是周几

然后里边内容是横向的柱状图

每个柱会带一个黑线 黑线代表95%置信区间  那个黑线叫误差条

如果是sns.barplot(x='tip_pct',y='day',hue='time',data=tips,orient=‘h’)

多一个hue参数 下边的会把time上的内容分类进行柱状图描述

tips['tip_pct'].plot.hist(bins=50)   

这是对tips里的tip_pct占total_bill百分比的柱状图

tips['tip_pct'].plot.density() 

这是输出一张密度图

 

3.

散布图或者点图  是观察两个一维数据序列之间关系的图

trans_data = np.log(data).diff().dropna()

首先 这个表是从一个文件里带出来的 然后这个文件里部分行被取值了:data = macro[['cpi', 'm1', 'tbilrate','unemp']]

这就是data是啥  macro是打开那个文件时候的对象

然后diff()   全部的是 np.diff(目标数组,n可选,要执行几次计算,axis=-1是默认)

说白了diff()就是把规定的那个轴,让他后边的值减去前边的值

然后使用sns的regplot方法就可以做一个散布图,这个图上会有一个线性回归的线

sns.regplot('m1', 'unemp', data=trans_data)

plt.title('Changes in log %s versus log %s' % ('m1', 'unemp'))

分别是横轴 竖轴 内容

之后是散布图矩阵,就是一大组散布图

sns.pairplot(trans_data, diag_kind='kde', plot_kws={'alpha': 0.2})   

这个有四个参数['cpi', 'm1', 'tbilrate','unemp']

所以是4*4  16个图 然后左上开始的斜对角 自己对自己的  就是线了  因为一维的数据

然后 会变成曲线的样子 是因为横纵坐标不一致

sns.factorplot(x='day', y='tip_pct', hue='time', col='smoker', kind='bar', data=tips[tips.tip_pct < 1])

这个是多界面的函数

然后多了一个col参数 这是用来区分界面和界面之间区别的东西

这个就是column的简写  是横着表示的  左边一个列右边一个列

sns.factorplot(x='day', y='tip_pct', row='time', col='smoker', kind='bar', data=tips[tips.tip_pct < 1])

这个多了一个row参数 就是竖着了

这俩都在 假如row有3个情况 col两个

就是一个三行两列六个图拼成的大图

sns.factorplot(x='tip_pct', y='day', kind='box',data=tips[tips.tip_pct < 0.5])  # 输出图形9-28

前边的kind是bar  这个是box  叫盒图

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值