seaborn与pandas绘图入门

导入环境

import numpy as np
import pandas as pd
from numpy.random import randn
import matplotlib.pyplot as plt 

若是在jupyter notebook编译,需要额外执行下列语句

%matplotlib notebook

该语句在Jupyter Notebook或JupyterLab中使用的IPython魔法命令(magic command),它用于配置matplotlib库以在notebook环境中交互式地显示图形。这个命令启用了matplotlib的Jupyter Widgets后端,允许你直接在notebook中交互式地缩放、平移和保存图表。

绘制折线图

s=pd.Series(randn(10).cumsum(),index=np.arange(0,100,10))
s.plot()

多组数据

df = pd.DataFrame(randn(10,4).cumsum(0),columns=['A','B','C','D'],index=np.arange(0,100,10))
df.plot()

绘制柱状图

fig,axes = plt.subplots(2,1)
data = pd.Series(abs(randn(16)),index=list('abcdefghijklmnop'))
data.plot.bar(ax=axes[0],color='k',alpha=0.7)
data.plot.barh(ax=axes[1],color='k',alpha=0.7)

 

axes[0] 与axes[1]是subplot两个对象,alpha为透明度 ,'k'为black

df=pd.DataFrame(abs(randn(6,4)),index=['one','two','three','four','five','six'],columns=pd.Index(['A','B','C','D'],name='Example'))

 df数据见下图

绘制带有子系的柱状图 

df.plot.bar()

 

 绘制堆积柱状图

df.plot.barh(stacked=True,alpha=0.5)

 实例:派对规模与日期的数据统计

导入数据,数据放在博客上了,直接下载,注意路径

#导入数据
tips=pd.read_csv('examples/tips.csv')

大致浏览一下数据

 提取day与size列

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

 party_count数据如下图所示

对应数值除以标准值

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

 结果如下图所示

 

 生成柱状图

party_pcts.plot.bar()

 

 由图表可以明显可以得出,在每天2人派对数量最多

导入seaborn模块

import seaborn as sns

 计算频率

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

 tips结果见下图

 使用seaborn绘制柱形图

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

 

 seaborn.barplot有一格hue选项,该选项通过一个额外的分类数值将数据分离出来,如下图所示

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

 绘制直方图

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

 

 小费百分比密度图(KDE)

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

 同时绘制直方图与连续密度估计

散点图

散点图用于检验两个一维数据之间的关系,数据集已经传入该博客

macro = pd.read_csv("examples/macrodata.csv")
data=macro[['cpi','m1','tbilrate','unemp']]
trans_data = np.log(data).diff().dropna()

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

对原始数据data取自然对数,计算其自然对数的一阶差分,然后删除由于差分操作而产生的NaN值

 使用seaborn的regplot方法绘制散点图

sns.regplot('m1','unemp',data=trans_data)
plt.title('Changes in log %s verus log %s' % ('m1','unemp'))

使用该方法绘制散点图,并你和出一条线型回归线

散点矩阵图

绘制散点矩阵图,正对角线取得是自己与自己的,在这里取该变量的直方图或者密度图

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

 

 分面网格与分类数据

对是否吸烟进行面板分类 

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

按标签划分数据,如按时间,是否吸烟来划分小费百分比

 两个分类面板

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

 绘制箱形图

sns.factorplot(x='day',y='tip_pct',kind='box',data=tips[tips.tip_pct<0.5])

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值