Seaborn一行代码画出让老板满意的统计图Matplotlib 像手动挡Seaborn 像自动挡。同样是画图Seaborn 一行做的事 Matplotlib 要写十行。Seaborn 基于 Matplotlib语法更简洁默认样式更好看特别适合统计图。安装和基础设置importseabornassnsimportmatplotlib.pyplotaspltimportpandasaspdimportnumpyasnp plt.rcParams[font.sans-serif][SimHei]plt.rcParams[axes.unicode_minus]False# 加载自带数据集tipssns.load_dataset(tips)irissns.load_dataset(iris)print(tips.head())箱线图看数据分布fig,axesplt.subplots(1,2,figsize(14,5))# 基础箱线图sns.boxplot(datatips,xday,ytotal_bill,axaxes[0])axes[0].set_title(各天消费金额分布)# 加分类颜色sns.boxplot(datatips,xday,ytotal_bill,huetime,axaxes[1])axes[1].set_title(各天消费按餐别)plt.tight_layout()plt.show()箱线图怎么看中间的线是中位数盒子是 Q1-Q3须子是 1.5×IQR 范围之外的点是异常值。小提琴图比箱线图信息更多fig,axplt.subplots(figsize(10,5))sns.violinplot(datatips,xday,ytotal_bill,huetime,splitTrue,axax)ax.set_title(各天消费分布小提琴图)plt.tight_layout()plt.show()小提琴图 箱线图 密度曲线。看得出数据有几个峰。热力图相关性一目了然# 计算相关性矩阵corrtips.select_dtypes(number).corr()fig,axplt.subplots(figsize(8,6))sns.heatmap(corr,annotTrue,cmapRdBu_r,center0,squareTrue,linewidths0.5,axax)ax.set_title(特征相关性热力图)plt.tight_layout()plt.show()分类图barplot / countplotfig,axesplt.subplots(1,3,figsize(16,5))# 柱状图带误差线sns.barplot(datatips,xday,ytotal_bill,axaxes[0],cisd)axes[0].set_title(日均消费±1标准差)# 计数图sns.countplot(datatips,xday,huetime,axaxes[1])axes[1].set_title(各天订单数)# 分类散点避免重叠sns.stripplot(datatips,xday,ytotal_bill,jitterTrue,axaxes[2])axes[2].set_title(各天消费散点)plt.tight_layout()plt.show()pairplot一键探索全部特征关系# 所有数值列两两画散点图对角线上画分布sns.pairplot(iris,huespecies,height2.5)plt.suptitle(鸢尾花数据集特征关系矩阵,y1.02,fontsize14,fontweightbold)plt.show()这个函数在做探索性数据分析EDA时特别有用一行代码看清所有特征之间的关系。调色板怎么不辣眼睛# 内置色板sns.color_palette(deep)# 默认sns.color_palette(muted)# 柔和sns.color_palette(pastel)# 淡彩sns.color_palette(bright)# 亮色sns.color_palette(dark)# 深色sns.color_palette(colorblind)# 色盲友好# 渐变色板sns.light_palette(seagreen,as_cmapTrue)sns.dark_palette(#69d,reverseTrue)sns.diverging_palette(250,30,l65,centerdark)# 使用sns.set_palette(muted)fig,axplt.subplots(figsize(10,4))sns.barplot(datatips,xday,ytotal_bill,huetime,axax)plt.show()实战用 Seaborn 做一份快速报告# 模拟销售数据np.random.seed(42)dfpd.DataFrame({销售额:np.random.normal(5000,1500,500),利润:lambdax:x*0.3np.random.normal(0,300,len(x)),品类:np.random.choice([手机,电脑,耳机,平板],500),地区:np.random.choice([华东,华南,华北,西部],500),月份:np.random.choice([1月,2月,3月,4月],500),})df[利润率]df[利润]/df[销售额]*100fig,axesplt.subplots(2,2,figsize(14,12))# 1. 各品类销售额箱线图sns.boxplot(datadf,x品类,y销售额,axaxes[0,0])axes[0,0].set_title(各品类销售额分布)# 2. 各月各品类热销pivotdf.pivot_table(values销售额,index月份,columns品类,aggfuncsum)sns.heatmap(pivot,annotTrue,fmt.0f,cmapYlOrRd,axaxes[0,1])axes[0,1].set_title(月度品类销售热力图)# 3. 销售额-利润率散点sns.scatterplot(datadf,x销售额,y利润率,hue品类,axaxes[1,0])axes[1,0].set_title(销售额 vs 利润率)# 4. 各品类各地区sns.barplot(datadf,x地区,y销售额,hue品类,axaxes[1,1])axes[1,1].set_title(各地区各品类销售额)plt.suptitle(2026上半年销售报告,fontsize16,fontweightbold)plt.tight_layout()plt.show()新手常见坑坑1Seaborn 和 Matplotlib 混用时样式冲突# Seaborn 会覆盖 Matplotlib 的样式# 先设置 Seaborn 样式再用 Matplotlib 调细节sns.set_style(whitegrid)fig,axplt.subplots()sns.barplot(datadf,axax)ax.set_title(标题)# OK坑2pairplot 数据太多别对几百列的数据跑 pairplot——画布会爆炸。先挑关键的 5-10 列。坑3barplot 默认带误差线ci95是默认的小样本时误差线很大。用ciNone关掉或cisd用标准差方式。写在最后Seaborn 是 EDA 利器。日常画图优先用 Seaborn需要精细调整时降到 Matplotlib 层。两者配合用效果最好。下一篇聊 Plotly——让图表动起来。
Seaborn:一行代码画出让老板满意的统计图
Seaborn一行代码画出让老板满意的统计图Matplotlib 像手动挡Seaborn 像自动挡。同样是画图Seaborn 一行做的事 Matplotlib 要写十行。Seaborn 基于 Matplotlib语法更简洁默认样式更好看特别适合统计图。安装和基础设置importseabornassnsimportmatplotlib.pyplotaspltimportpandasaspdimportnumpyasnp plt.rcParams[font.sans-serif][SimHei]plt.rcParams[axes.unicode_minus]False# 加载自带数据集tipssns.load_dataset(tips)irissns.load_dataset(iris)print(tips.head())箱线图看数据分布fig,axesplt.subplots(1,2,figsize(14,5))# 基础箱线图sns.boxplot(datatips,xday,ytotal_bill,axaxes[0])axes[0].set_title(各天消费金额分布)# 加分类颜色sns.boxplot(datatips,xday,ytotal_bill,huetime,axaxes[1])axes[1].set_title(各天消费按餐别)plt.tight_layout()plt.show()箱线图怎么看中间的线是中位数盒子是 Q1-Q3须子是 1.5×IQR 范围之外的点是异常值。小提琴图比箱线图信息更多fig,axplt.subplots(figsize(10,5))sns.violinplot(datatips,xday,ytotal_bill,huetime,splitTrue,axax)ax.set_title(各天消费分布小提琴图)plt.tight_layout()plt.show()小提琴图 箱线图 密度曲线。看得出数据有几个峰。热力图相关性一目了然# 计算相关性矩阵corrtips.select_dtypes(number).corr()fig,axplt.subplots(figsize(8,6))sns.heatmap(corr,annotTrue,cmapRdBu_r,center0,squareTrue,linewidths0.5,axax)ax.set_title(特征相关性热力图)plt.tight_layout()plt.show()分类图barplot / countplotfig,axesplt.subplots(1,3,figsize(16,5))# 柱状图带误差线sns.barplot(datatips,xday,ytotal_bill,axaxes[0],cisd)axes[0].set_title(日均消费±1标准差)# 计数图sns.countplot(datatips,xday,huetime,axaxes[1])axes[1].set_title(各天订单数)# 分类散点避免重叠sns.stripplot(datatips,xday,ytotal_bill,jitterTrue,axaxes[2])axes[2].set_title(各天消费散点)plt.tight_layout()plt.show()pairplot一键探索全部特征关系# 所有数值列两两画散点图对角线上画分布sns.pairplot(iris,huespecies,height2.5)plt.suptitle(鸢尾花数据集特征关系矩阵,y1.02,fontsize14,fontweightbold)plt.show()这个函数在做探索性数据分析EDA时特别有用一行代码看清所有特征之间的关系。调色板怎么不辣眼睛# 内置色板sns.color_palette(deep)# 默认sns.color_palette(muted)# 柔和sns.color_palette(pastel)# 淡彩sns.color_palette(bright)# 亮色sns.color_palette(dark)# 深色sns.color_palette(colorblind)# 色盲友好# 渐变色板sns.light_palette(seagreen,as_cmapTrue)sns.dark_palette(#69d,reverseTrue)sns.diverging_palette(250,30,l65,centerdark)# 使用sns.set_palette(muted)fig,axplt.subplots(figsize(10,4))sns.barplot(datatips,xday,ytotal_bill,huetime,axax)plt.show()实战用 Seaborn 做一份快速报告# 模拟销售数据np.random.seed(42)dfpd.DataFrame({销售额:np.random.normal(5000,1500,500),利润:lambdax:x*0.3np.random.normal(0,300,len(x)),品类:np.random.choice([手机,电脑,耳机,平板],500),地区:np.random.choice([华东,华南,华北,西部],500),月份:np.random.choice([1月,2月,3月,4月],500),})df[利润率]df[利润]/df[销售额]*100fig,axesplt.subplots(2,2,figsize(14,12))# 1. 各品类销售额箱线图sns.boxplot(datadf,x品类,y销售额,axaxes[0,0])axes[0,0].set_title(各品类销售额分布)# 2. 各月各品类热销pivotdf.pivot_table(values销售额,index月份,columns品类,aggfuncsum)sns.heatmap(pivot,annotTrue,fmt.0f,cmapYlOrRd,axaxes[0,1])axes[0,1].set_title(月度品类销售热力图)# 3. 销售额-利润率散点sns.scatterplot(datadf,x销售额,y利润率,hue品类,axaxes[1,0])axes[1,0].set_title(销售额 vs 利润率)# 4. 各品类各地区sns.barplot(datadf,x地区,y销售额,hue品类,axaxes[1,1])axes[1,1].set_title(各地区各品类销售额)plt.suptitle(2026上半年销售报告,fontsize16,fontweightbold)plt.tight_layout()plt.show()新手常见坑坑1Seaborn 和 Matplotlib 混用时样式冲突# Seaborn 会覆盖 Matplotlib 的样式# 先设置 Seaborn 样式再用 Matplotlib 调细节sns.set_style(whitegrid)fig,axplt.subplots()sns.barplot(datadf,axax)ax.set_title(标题)# OK坑2pairplot 数据太多别对几百列的数据跑 pairplot——画布会爆炸。先挑关键的 5-10 列。坑3barplot 默认带误差线ci95是默认的小样本时误差线很大。用ciNone关掉或cisd用标准差方式。写在最后Seaborn 是 EDA 利器。日常画图优先用 Seaborn需要精细调整时降到 Matplotlib 层。两者配合用效果最好。下一篇聊 Plotly——让图表动起来。