当前位置: 首页 > news >正文

Pandas和Seaborn可视化详解

1.Pandas绘图-单变量
  • 概述

    • pandas库是Python数据分析的核心库

    • 它不仅可以加载和转换数据,还可以做更多的事情:它还可以可视化

    • pandas绘图API简单易用,是pandas流行的重要原因之一

  • 可视化小技巧:

    • 如果是类别型

      • 柱状

      • 饼图 (类别相对较少 5-6个 或者更少), 所有的类别加起来是1个整体

    • 如果是数值型

      • 看变化趋势 折线 plot.line()

      • 看分布直方plot.hist()

        • 绘制直方图的时候,需要注意, 如果数据分布不均匀(倾斜的数据, 有取值数量较少的极大, 极小值) 这个时候如果不做数据的处理, 直接绘制直方图, 不能反映出数据的分布来, 只能得到一个柱子

        • 可以把极值单独取出来讨论

        • 把去掉极值的部分再绘制直方图

  • 单变量可视化介绍

    • 单变量可视化, 包括条形图、折线图、直方图、饼图

    • 数据使用葡萄酒评论数据集,来自葡萄酒爱好者杂志,包含10个字段,150929行,每一行代表一款葡萄酒

    • 字段介绍

  • 代码演示

    • 需求1(柱状图): 将所有的葡萄酒品牌按照产区分类, 看看哪个产区的葡萄酒品种多

      # 1. 加载源数据
      import pandas as pd
      ​
      reviews = pd.read_csv('data/winemag-data_first150k.csv', index_col=0)
      reviews
      ​
      # 2. 查看每列的信息
      # reviews.info()
      reviews.describe()
      ​
      # 3. 需求1: 将所有的葡萄酒品牌按照产区分类, 看看哪个产区的葡萄酒品种多.
      kwargs = dict(figsize=(16, 8), fontsize=20, color=['b', 'orange', 'g', 'r'])
      reviews['province'].value_counts().head(10).plot.bar(**kwargs)
       
    • 需求2: 计算 加利福尼亚 葡萄酒占总数的 百分比

      # 4. 上图说明 加利福尼亚 生产的葡萄酒比其他省都多, 也可以折算成比例.
      # 需求2: 计算 加利福尼亚 葡萄酒占总数的 百分比.
      (reviews['province'].value_counts().head(10) / len(reviews)).plot.bar(**text_kwargs)
       
    • 需求3: 获取葡萄酒评分列, 统计每个评分, 分别有多少种酒.

      # 5. 需求3: 获取葡萄酒评分列, 统计每个评分, 分别有多少种酒.
      # 柱状图
      reviews['points'].value_counts().sort_index().plot.bar(**text_kwargs)
      ​
      # 折线图, 如果要绘制的数据不是类别值, 而是连续值, 比较适合实用折线图.
      reviews['points'].value_counts().sort_index().plot.line(**text_kwargs) 
       

      柱状图和折线图区别:

      • 柱状图:

        • 简单直观,很容易根据柱子的长短看出值的大小,易于比较各组数据之间的差别

      • 折线图:

        • 易于比较各组数据之间的差别

        • 能比较多组数据在同一个维度上的趋势

        • 每张图上不适合展示太多折线

    • 需求4:面积图就是在折线图的基础上,把折线下面的面积填充颜色

2.Pandas绘图-饼图
  • 代码演示-饼图

    饼图适合统计类别数量不多, 组合起来是1的数据的可视化

3 .Seaborn绘图-KDE和直方图
  • 概述

    • Seaborn是基于matplotlib的图形可视化python包。

    • 它提供了一种高度交互式界面,便于用户能够做出各种有吸引力的统计图表。

    • Seaborn是在matplotlib的基础上进行了更高级的API封装,从而使得作图更加容易,在大多数情况下使用seaborn能做出很具有吸引力的图,而使用matplotlib就能制作具有更多特色的图。

    • Seaborn和Pandas的API配合的很好,使用DataFrame/Series的数据就可以绘图 seaborn: statistical data visualization — seaborn 0.13.2 documentation

  • seaborn 通用的几个参数

    • data 传入一个df 对象

    • x , y df中的列名

    • hue 传入一个类别型的列名, 同样的图会按照这个类别, 分组, 分别绘制一份绘制到一起方便进行对比

    seaborn 调整图的大小

    • plt.subplots(figsize=())

    • 如果plt.subplots(figsize=()) 不行, 都会有一个height的参数, 指定图片的高度 可以通过height 调整图片大小

    • height 高度 aspect 宽高比例

  • 需求1: 单变量-直方图

  • 需求2: 单变量-KDE图

    KDE图: 用于估计未知随机变量的概率分布. x轴: 样本数据, y轴: 概率分布.

    KDE图可以理解为是对直方图的加窗平滑. 它解决了一个基本的数据平滑问题, 即: 根据有限的数据样本对总体进行推断.

  • 直方图 和 KDE对比

    • 表示的意义基本一样, 都是 线/柱子越高 出现的概率/样本数量越大/越高

    • KDE 当多个类别进行对比的时候, 读图比直方图方便

    • Y轴的坐标, KDE图是概率密度 直方图是样本数量

4.Seaborn绘图-计数柱状图
  • 概述

    • 计数图和直方图很像,直方图通过对数据分组来描述分布,

    • 计数图(条形图)是对离散变量(分类变量)计数。

  • 实例代码

5.双变量可视化-散点-蜂巢-2D KDE
  • 散点图-scatterplot

  • 散点图-regplot

    # 散点图
    # 1. 绘制画布
    fig, ax = plt.subplots(figsize=(12, 6))
    ​
    # 2. 绘制散点图
    # fit_reg 默认是True 会拟合一条直线 就是利用这一份数据 跑了线性回归
    # fit_reg=False 可以关掉
    sns.regplot(data=tips, x='total_bill', y='tip', fit_reg=True)
    # 3. 设置标题
    ax.set_title('总账小费之间关系图')
    # 4. 绘图
    plt.show()

  • 蜂巢图

  • 2D KDE图

6.双变量可视化
  • 箱线图: 用于显示多种统计信息:最小值,1/4分位,中位数,3/4分位,最大值,以及离群值(如果有)

    • 箱线图读图

      • 箱子的中间有一条线,代表了数据的中位数

      • 箱子的上下底,分别是数据的上四分位数(Q3)和下四分位数(Q1)

      • 箱体包含了50%的数据。因此,箱子的高度在一定程度上反映了数据的波动程度

      • 上下边缘则代表了该组数据的最大值和最小值

        • IQR = 上四分位数(Q3) - 下四分位数(Q1)

          四分位距(interquartile range, IQR),又称四分差

        • 判断异常值时最大值 = 上四分位数(Q3) + 1.5 IQR 大于这个值的就是异常值

        • 判断异常值时最小值 = 下四分位数(Q1)- 1.5 IQR 小于这个值的就是异常值

      • 有时候箱子外部会有一些点,可以理解为数据中的“异常值”

  • 小提琴图, 它是经典的可视化方法,但可能会掩盖数据的分布

    小提琴图能显示与箱线图相同的值, 小提琴图把"箱线"绘成核密度估计,

    有助于保留数据的更多可视化信息

    • 优势

      • 小提琴图同时展示了数据的统计分布和概率密度,能够更好地揭示数据的形态和特征。

      • 小提琴图可以通过分组变量进行比较分析,方便观察不同类别间的差异。

      • 小提琴图能够显示数据的离散程度,通过观察图形的宽度可以了解数据的散布情况。

7.多变量可视化
  • 概述

    • 绘制多变量数据没有标准的套路

    • 如果想在图中包含更多信息,可以使用颜色、大小和形状来区分它们

  • 代码演示

    # 多变量, 通过 颜色区分.
    # 例如: 使用violinplot函数时,可以通过hue参数按性别(sex)给图着色, 可以为“小提琴”的左右两半着不同颜色,用于区分性别
    ​
    # white, dark, whitegrid, darkgrid, ticks
    # sns.set_style('ticks')
    ​
    fig, ax = plt.subplots(figsize=(12, 6))
    sns.violinplot(data=tips, x='time', y='total_bill', hue='sex', split=True) # hue='性别'
    ax.set_title('总账小费之间关系图')
    plt.show()
     
8.Seaborn主题和样式
  • 概述

    • 上面的Seaborn图都采用了默认样式,可以使用sns.set_style函数更改样式。

    • 该函数只要运行一次,后续绘图的样式都会发生变化

    • Seaborn有5种样式:

      • darkgrid 黑色网格(默认)

      • whitegrid 白色网格

      • dark 黑色背景

      • white 白色背景

      • ticks

  • 格式

    sns.set_style('主题名')
    ​
    fig,ax = plt.subplots()
    ax = sns.violinplot(x='time',y='total_bill',hue='sex',data = tips,split = True)

  • 代码演示

  • Seaborn绘图小结

    sns.XXXplot(data = df, x = '列名', y='列名',hue='列名')

    • 调整绘图区域的大小

      • plt.subplots(figsize=())

      • 如果plt.subplots(figsize=()) 不行, 都会有一个height的参数, 指定图片的高度 可以通过height 调整图片大小

      • height 高度 aspect 宽高比例

相关文章:

Pandas和Seaborn可视化详解

1.Pandas绘图-单变量 概述 pandas库是Python数据分析的核心库 它不仅可以加载和转换数据,还可以做更多的事情:它还可以可视化 pandas绘图API简单易用,是pandas流行的重要原因之一 可视化小技巧: 如果是类别型 柱状 饼图 (类别相对较少 5-…...

【Python】Windows下安装使用FFmpeg

FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。之前为了MP3转wav,需要pip安装并import AudioSegment,但是会报错:FileNotFoundError: [WinError 2] 系统找不到指定的文件。 因为FFmpeg需要另…...

LLM - 使用 XTuner 指令微调 多模态大语言模型(InternVL2) 教程

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/142528967 免责声明:本文来源于个人知识与公开资料,仅用于学术交流,欢迎讨论,不支持转载。 XTuner…...

【Python】数据可视化之热力图

热力图(Heatmap)是一种通过颜色深浅来展示数据分布、密度和强度等信息的可视化图表。它通过对色块着色来反映数据特征,使用户能够直观地理解数据模式,发现规律,并作出决策。 目录 基本原理 sns.heatmap 代码实现 基…...

个人博客系统测试(selenium)

P. S.:以下代码均在VS2019环境下测试,不代表所有编译器均可通过。 P. S.:测试代码均未展示头文件stdio.h的声明,使用时请自行添加。 博主主页:Yan. yan.                        …...

【速成Redis】01 Redis简介及windows上如何安装redis

前言: 适用于:需要快速掌握redis技能的人(比如我),在b站,找了个课看。 01.课程简介_哔哩哔哩_bilibili01.课程简介是【GeekHour】一小时Redis教程的第1集视频,该合集共计19集,视频…...

入侵检测系统(IDS)和入侵预防系统(IPS)

入侵检测系统(IDS)和入侵预防系统(IPS)是网络安全领域中用来检测和防止潜在的恶意活动或政策违规行为的系统。它们的主要目的是保护网络和主机不受未授权访问和各种形式的攻击。以下是它们的主要区别和功能: 一&#…...

pytorch 加载模型参数后 如何测试数据,应用模型预测数据,然后连续变量转换成 list 或者numpy.array padans并保存到csv文件中

在PyTorch中,加载模型参数后测试数据通常涉及以下几个步骤: 1. **加载模型**:首先,你需要定义模型的结构,然后加载预训练的参数。 2. **加载数据**:准备你的测试数据集。确保数据集已经正确地预处理&…...

uni-app开发流程(开发、预览、构建和发布过程)

uni-app 是一个使用 Vue.js 开发所有前端应用的框架,支持编写一次代码,生成可以在多个平台(如微信小程序、H5、App等)运行的应用。下面是 uni-app 的开发流程,包括从创建项目到部署的各个阶段。 1. 创建项目 通过 HB…...

Linux Shell: 使用 Expect 自动化 SCP 和 SSH 连接的 Shell 脚本详解

文章目录 0. 引言2. 解决方案3. 脚本详解脚本1:使用 SSH 和 Expect 自动化登录远端机器脚本说明 脚本2:使用 SCP 和 Expect 自动化文件上传脚本说明 脚本3:使用 SCP 和 Expect 自动化文件下载脚本说明 4. 脚本的使用方法5. 关键技术点5.1. Ex…...

深入分析MySQL事务日志-Undo Log日志

文章目录 InnoDB事务日志-Undo Log日志2.1 Undo Log2.1.1 Undo Log与原子性2.1.2 Undo的存储格式1)insert类型Undo Log2)delete类型Undo Log3)update类型Undo Log 2.1.3 Undo Log的工作原理2.1.4 Undo Log的系统参数2.1.5 Undo Log与Purge线程…...

828华为云征文 | 在Huawei Cloud EulerOS系统中安装Docker的详细步骤与常见问题解决

前言 Docker是一种轻量级的容器技术,广泛用于应用程序的开发、部署和运维。在华为云的欧拉(Huawei Cloud EulerOS)系统上安装和运行Docker,虽然与CentOS有相似之处,但在具体实现过程中,可能会遇到一些系统…...

什么是数据增强中的插值法?

一、插值法的概念 在数据增强中,插值法是一种重要的技术,它通过数学模型在已知数据点之间估计未知数据点的值。这种方法可以帮助我们在不增加实际数据的情况下,通过生成新的数据点来扩展数据集。插值法基于这样的假设:如果已知的数…...

springboot实战学习(9)(配置mybatis“驼峰命名“和“下划线命名“自动转换)(postman接口测试统一添加请求头)(获取用户详细信息接口)

接着学习。之前的博客的进度:完成用户模块的注册接口的开发以及注册时的参数合法性校验、也基本完成用户模块的登录接口的主逻辑的基础上、JWT令牌"的组成与使用以及完成了"登录认证"(生成与验证JWT令牌)具体往回看了解的链接…...

之前做了抵押贷款,现在房市不景气,马上贷款要到期了该怎么办?

面对房贷的重压,特别是对于那些正承受高息贷款之苦的现有房产业主而言,探索有效的减负策略显得尤为重要。今天,我们共同探讨几种智慧策略,旨在帮助您巧妙减轻房贷的经济负担。 一、优化贷款结构:低息置换的魔力 当前&a…...

poi生成的ppt,powerPoint打开提示内容错误解决方案

poi生成的ppt,powerPoint打开提示内容错误解决方案 最近做了ppt的生成,使用poi制作ppt,出现一个问题。微软的powerPoint打不开,提示错误信息 通过xml对比工具发现只需要删除幻灯片的某些标签即可解决。 用的是XML Notepand 分…...

基于stm32物联网身体健康检测系统

在当今社会,由于经济的发展带来了人们生活水平不断提高,但是人们的健康问题却越来越突出了,各种各样的亚健康随处可在,失眠、抑郁、焦虑症,高血压、高血糖等等侵袭着人们的健康,人们对健康的关注达到了一个…...

BeautifulSoup4在爬虫中的使用

一、Beautiful Soup4简介 Beautiful Soup 提供一些简单的python函数来处理导航、搜索等功能。 它是一个工具箱,是python的一个库,最主要的功能是从网页获取数据。 二、Beautiful Soup4安装 在cmd下安装 pip install beautifulsoup4三、BeautifulSou…...

Laya2.x出包alipay小游戏

小游戏开发者工具,支付宝官方已经出了,不说了。 1.LAYA2.X打出得小游戏包中my-adapter.js这个文件需要替换,或者自行修改,替换3.x得; 2.unity导包出得模型文件命名需要注意,避免太长,路径也不…...

Vue极简入门

1.注册路由,如果是子路由,就加一个children import Vue from vue import Router from vue-router import Main from ../views/Main.vue import Login from ../views/Login.vueimport UserProfile from "../views/user/Profile.vue" import Us…...

centos 7 部署awstats 网站访问检测

一、基础环境准备(两种安装方式都要做) bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats&#xff0…...

P3 QT项目----记事本(3.8)

3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...

相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

ios苹果系统,js 滑动屏幕、锚定无效

现象&#xff1a;window.addEventListener监听touch无效&#xff0c;划不动屏幕&#xff0c;但是代码逻辑都有执行到。 scrollIntoView也无效。 原因&#xff1a;这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作&#xff0c;从而会影响…...

2025季度云服务器排行榜

在全球云服务器市场&#xff0c;各厂商的排名和地位并非一成不变&#xff0c;而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势&#xff0c;对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析&#xff1a; 一、全球“三巨头”…...

AGain DB和倍数增益的关系

我在设置一款索尼CMOS芯片时&#xff0c;Again增益0db变化为6DB&#xff0c;画面的变化只有2倍DN的增益&#xff0c;比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析&#xff1a; 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...

push [特殊字符] present

push &#x1f19a; present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中&#xff0c;push 和 present 是两种不同的视图控制器切换方式&#xff0c;它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...

C#学习第29天:表达式树(Expression Trees)

目录 什么是表达式树&#xff1f; 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持&#xff1a; 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...

打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用

一、方案背景​ 在现代生产与生活场景中&#xff0c;如工厂高危作业区、医院手术室、公共场景等&#xff0c;人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式&#xff0c;存在效率低、覆盖面不足、判断主观性强等问题&#xff0c;难以满足对人员打手机行为精…...

基于Java+VUE+MariaDB实现(Web)仿小米商城

仿小米商城 环境安装 nodejs maven JDK11 运行 mvn clean install -DskipTestscd adminmvn spring-boot:runcd ../webmvn spring-boot:runcd ../xiaomi-store-admin-vuenpm installnpm run servecd ../xiaomi-store-vuenpm installnpm run serve 注意&#xff1a;运行前…...