当前位置: 首页> 文旅> 旅游 > seaborn与pandas绘图入门

seaborn与pandas绘图入门

时间:2025/7/27 18:46:37来源:https://blog.csdn.net/qq_57290048/article/details/141071655 浏览次数:0次

导入环境

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])

关键字:seaborn与pandas绘图入门

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: