百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

Python数据分析之Seaborn(分类分析绘图 )

liuian 2024-12-15 15:25 19 浏览


?Seaborn分类分析绘图

%matplotlib inline
import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
import seaborn as sns
sns.set(style="whitegrid", color_codes=True)
np.random.seed(sum(map(ord, "categorical")))
titanic = sns.load_dataset("titanic") #导入泰坦尼克数据集
tips = sns.load_dataset("tips") #导入小费数据集
iris = sns.load_dataset("iris") #导入鸢尾花数据集

散点图

sns.stripplot(x="day", y="total_bill", data=tips)

问题:有重叠,无法看见数据的密度

  • 解决方法一:通过jitter抖动

抖动是平时可视化中的常用的观察“密度”的方法,除了使用参数抖动,特定的抖动需求也可以用numpy在数据上处理实现

sns.stripplot(x="day", y="total_bill", data=tips, jitter=True) # jitter抖动
<matplotlib.axes._subplots.AxesSubplot at 0x22d8a3216a0>
  • 解决方法二:通过swarmplot()函数
sns.swarmplot(x="day", y="total_bill", data=tips)
<matplotlib.axes._subplots.AxesSubplot at 0x22d87f3b128>
sns.swarmplot(x="day", y="total_bill", hue="sex",data=tips) #hue 参数控制分组绘图
<matplotlib.axes._subplots.AxesSubplot at 0x22d8a428860>

箱型图

箱形图(Box-plot)又称为盒须图、盒式图或箱线图,是一种用作显示一组数据分散情况资料的统计图。因形状如箱子而得名。

如上图所示,标示了图中每条线表示的含义,其中应用到了分位值(数)的概念。
主要包含六个数据节点,将一组数据从大到小排列,分别计算出它的上边缘,上四分位数Q3,中位数,下四分位数Q1,下边缘,还有一个异常值。

举例说明,以下是箱形图的具体例子:


这组数据显示出:


  • 最小值(minimum)=5
  • 下四分位数(Q1)=7
  • 中位数(Med--也就是Q2)=8.5
  • 上四分位数(Q3)=9
  • 最大值(maximum)=10
  • 平均值=8
  • 四分位间距=Q3-Q1=2 (即ΔQ)
  • 最大值区间: Q3+1.5ΔQ = 12
  • 最小值区间: Q1-1.5ΔQ = 4
  • mild outlier = 3.5
  • extreme outlier = 0.5
sns.boxplot(x="day", y="total_bill", hue="time", data=tips)
<matplotlib.axes._subplots.AxesSubplot at 0x22d8bbd7240>

琴形图

seaborn.violinplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None, bw='scott', cut=2, scale='area', scale_hue=True, gridsize=100, width=0.8, inner='box', split=False, orient=None, linewidth=None, color=None, palette=None, saturation=0.75, ax=None, **kwargs)
  • split: bool, optional #琴形图是否从中间分开两部分
  • scale: {“area”, “count”, “width”}, optional #用于调整琴形图的宽带。
    • area——每个琴图拥有相同的面域;
    • count——根据样本数量来调节宽度;
    • width——每个琴图则拥有相同的宽度。
  • inner: {“box”, “quartile”, “point”, “stick”, None}, optional #控制琴图内部数据点的形态。
    • box——绘制微型 boxplot;
    • quartiles——绘制四分位的分布;
    • point/stick——绘制点或小竖条。
sns.violinplot(x="total_bill", y="day", hue="time", data=tips)
<matplotlib.axes._subplots.AxesSubplot at 0x22d8a9f97b8>
sns.violinplot(x="day", y="total_bill", hue="sex", data=tips, split=True) #split: bool, optional #琴形图是否从中间分开两部分

条形图

显示值的集中趋势可以用条形图

sns.barplot(x="sex", y="survived", hue="class", data=titanic)
<matplotlib.axes._subplots.AxesSubplot at 0x22d8a5bc358>

点图

点图可以更好的描述变化差异

sns.pointplot(x="sex", y="survived", hue="class", data=titanic)
<matplotlib.axes._subplots.AxesSubplot at 0x22d8a5bcda0>
#详细指定属性值
sns.pointplot(x="class", y="survived", hue="sex", data=titanic,
              palette={"male": "g", "female": "m"}, #  指定颜色
              markers=["^", "o"],  # 指定点样式
              linestyles=["-", "--"]); # 指定线型样式

组合

#琴型图 + 分散点图
sns.violinplot(x="day", y="total_bill", data=tips, inner=None)
sns.swarmplot(x="day", y="total_bill", data=tips, color="w", alpha=.5)
<matplotlib.axes._subplots.AxesSubplot at 0x22d8a3f4908>

多层面板分类图

factorplot()函数是对各种图形的一个更高级别的API封装,在Seaborn中非常常用。

seaborn.factorplot(x=None, y=None, hue=None, data=None, row=None, col=None, col_wrap=None, estimator=<function mean>, ci=95, n_boot=1000, units=None, order=None, hue_order=None, row_order=None, col_order=None, kind='point', size=4, aspect=1, orient=None, color=None, palette=None, legend=True, legend_out=True, sharex=True, sharey=True, margin_titles=False, facet_kws=None, **kwargs)

参数说明:

  • x,y 数据集变量(变量名)
  • hue 控制分组绘图(变量名)
  • date 数据集 (数据集名)
  • row,col 更多分类变量进行平铺显示 (变量名)
  • col_wrap 每行的最高平铺数 (整数)
  • estimator 在每个分类中进行矢量到标量的映射 (矢量)
  • ci 置信区间 (浮点数或None)
  • n_boot 计算置信区间时使用的引导迭代次数 (整数)
  • units 采样单元的标识符,用于执行多级引导和重复测量设计 (数据变量或向量数据)
  • order, hue_order 对应排序列表 (字符串列表)
  • row_order, col_order 对应排序列表 (字符串列表)
  • kind : 可选:point 默认, bar 柱形图, count 频次, box 箱体, violin 提琴, strip 散点,swarm 分散点
  • size 每个面的高度(英寸) (标量)
  • aspect 纵横比 (标量)
  • orient 方向 ("v"/"h")
  • color 颜色 (matplotlib颜色)
  • palette 调色板 (seaborn颜色色板或字典)
  • legend hue的信息面板 (True/False)
  • legend_out 是否扩展图形,并将信息框绘制在中心右边 (True/False)
  • share{x,y} 共享轴线 (True/False)
  • facet_kws FacetGrid的其他参数 (字典)
sns.factorplot(x="day", y="total_bill", hue="smoker", data=tips) #默认是点图
<seaborn.axisgrid.FacetGrid at 0x22d8a79def0>
sns.factorplot(x="day", y="total_bill", hue="smoker", data=tips, kind="bar") #绘制条形图
<seaborn.axisgrid.FacetGrid at 0x22d8a648748>
sns.factorplot(x="day", y="total_bill", hue="smoker",
               col="time", data=tips, kind="swarm") #绘制分散点图
<seaborn.axisgrid.FacetGrid at 0x22d8a867be0>
sns.factorplot(x="time", y="total_bill", hue="smoker",
               col="day", data=tips, kind="box", size=4, aspect=.5) #绘制箱型图
<seaborn.axisgrid.FacetGrid at 0x22d8a8bcb00>

参考

[Style functions]http://seaborn.pydata.org/tutorial/aesthetics.html#aesthetics-tutorial

[Color palettes]http://seaborn.pydata.org/tutorial/color_palettes.html#palette-tutorial

[Distribution plots]http://seaborn.pydata.org/tutorial/distributions.html#distribution-tutorial

[Categorical plots]http://seaborn.pydata.org/tutorial/categorical.html#categorical-tutorial

[Regression plots]http://seaborn.pydata.org/tutorial/regression.html#regression-tutorial

[Axis grid objects]http://seaborn.pydata.org/tutorial/axis_grids.html#grid-tutorial

[10分钟python图表绘制]https://zhuanlan.zhihu.com/p/24464836

相关人工智能与异构计算的知识分享,欢迎关注我的公众号【AI异构】

相关推荐

x-cmd install | jellex - 用 Python 语法在终端里玩转 JSON 数据!

还在为命令行下处理JSON数据烦恼吗?jellex来了!它是一款基于终端的交互式JSON和JSONLines数据处理工具,让你用熟悉的Python语法,轻松过滤、转换和探索JSO...

一篇长文带你在Python里玩转Json数据

Json简介Json(JavaScriptObjectNotation)很多网站都会用到Json格式来进行数据的传输和交换,就像上篇我提到的网易云音乐接口,它们返回的数据都是Json格式的。这因为...

Python JSON 魔法手册:数据转换的终极艺术

对话实录小白:(崩溃)我从API拿到了JSON数据,怎么变成Python对象?专家:(掏出魔法书)用json模块,轻松实现数据转换!JSON基础三连击1.字符串Python对...

Python JSON 详解教程(python json())

JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式(lightweightdatainterchangeformat)常用于Web应用、配置文件(co...

Python 数据的 JSON 格式序列化及反序列化

在Python中,将数据转换为JSON格式非常简单,可以使用内置的json模块。json模块提供了json.dumps()和json.dump()方法,用于将Python对象...

如何使Python类可JSON序列化(python json 类)

技术背景在Python开发中,JSON(JavaScriptObjectNotation)是一种常用的数据交换格式。然而,Python的json模块默认只能序列化一些基本数据类型,如字典、列表、字...

详细介绍一下Python如何对JSON格式数据进行处理?

在Python中对于JSON数据的处理是在日常开发中的常见需求之一。通常情况下,对JSON数据的处理主要涉及到如下的的几个步骤对于JSON数据的解析操作对于JSON数据的处理操作对于JSON数据的格式...

Python 字典l转换成 JSON(python转化字典)

本文需要5分钟。如果对您有用可以点赞评论关注.Python字典到JSONJSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式,它基于ECMAScrip...

打造熟悉的VS界面风格(vs界面设计美化)

用惯了老机子的VS界面,换新机子时,各种不适应。现在重新打造老款样式:1)下载VisualStudio2013ColorThemeEditorhttps://marketplace.vis...

办公小技巧:全部亮相 让Excel单元格完全显示文本

平时我们在使用Excel制作表格的时候,经常会遇到由于文本内容较多,导致这些内容无法在一个单元格中完全显示。常规的方法是将单元格设置为“自动换行”,但是这样会影响整个文件的美观。下例是某小区的入住登记...

WinForms 中的 CheckBox 控件使用指南

在WinForms中,CheckBox控件是一个允许用户选择或取消选择的单选按钮。它通常用于表示布尔值(真/假)或允许多选的情况。以下是如何使用CheckBox控件的一些基本信息和示例代码。创建...

图片转文字--四种OCR工具的安装和使用

本文仅测试简单的安装和使用,下一步应该是测试不同数据集下的检测准确率和检测效率,敬请期待。作者的系统环境是:笔记本:ThindPadP520OS:win11显卡:QuadroP520一、EasyO...

C# 给Word每一页设置不同图片水印

Word中设置水印时,可加载图片设置为水印效果,但通常添加水印效果时,会对所有页面都设置成统一效果,如果需要对每一页或者某个页面设置不同的水印效果,则可以参考本文中的方法。下面,将以C#代码为例,对W...

集成的面向对象控件Xtreme Controls正式发布v17.0.0

CodejockXtremeControls为Windows图形用户软件工程师提供众多的有关MFC的控件产品,该产品是通过完全测试并专门为图形用户设计的一款专业控件。它是一款集成了面向对象的控件被...

Win10 Build 10061老问题修复新问题来

|责编:刘菲菲【中关村在线软件资讯】4月23日消息:微软今天正式推送了Windows10Build10061预览版这个版本除了正常的功能更新和调整外,还修复了多个bug。其中一部分对于开发者开...