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 宽高比例

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/432257.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

灵办AI搜索引擎和文档总结工具

前言—— 在信息爆炸的时代,如何高效地获取和处理知识成为了每个人面临的挑战。随着人工智能技术的迅猛发展,本文将深入探讨这一创新工具的功能与优势,以及如何在日常生活和工作中充分利用它,开启智能化的信息获取新篇章。 点击…

金属增材制造咋突破?纳米纹理粉末如何助力金属增材制造?

大家好,今天我们来了解一篇金属增材制造文章——《High absorptivity nanotextured powders for additive manufacturing》发表于《Science Advances》。金属增材制造在医疗、航空航天等领域,它潜力巨大,但目前可打印的金属材料有限&#xff…

握手传输 状态机序列检测(记忆科技笔试题)_2024年9月2日

发送模块循环发送0-7,在每个数据传输完成后,间隔5个clk,发送下一个 插入寄存器打拍处理,可以在不同的时钟周期内对信号进行同步,从而减少亚稳态的风险。 记忆科技笔试题:检测出11011在下一个时钟周期输出…

PowerPoint技巧:将幻灯片里的图片背景设置为透明

在PPT中添加了图片,想要将图片中的背景设置为透明或者想要抠图,有什么方法吗?今天分享两个方法。 方法一: 添加图片,选中图片之后,点击【图片格式】功能,点击最左边的【删除背景】 PPT会自动帮…

vue3扩展echart封装为组件库-快速复用

ECharts ECharts,全称Enterprise Charts,是一款由百度团队开发并开源,后捐赠给Apache基金会的纯JavaScript图表库。它提供了直观、生动、可交互、可个性化定制的数据可视化图表,广泛应用于数据分析、商业智能、网页开发等领域。以…

Distilabel合成数据生成框架简明教程

Distilabel 是一个用于合成数据和 AI 反馈的框架,适用于需要基于经过验证的研究论文的快速、可靠和可扩展的管道的工程师。 NSDT工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 -…

Webpack教程-概述

什么是Webpack Webpack是一个静态资源打包工具。它以一个或多个文件作为打包入口,将整个项目所有的文件编译组合成一个或多个文件进行输出。(输出的文件即编译好的文件,就可以在浏览器上运行) Webpack官网 核心概念 entry (入口) entiry 指webpack…

企业源代码怎么保护?2024年最新推荐10款源代码加密软件

在现代企业中,源代码是核心资产之一,保护源代码安全已成为企业管理中的重中之重。源代码的泄露不仅会导致企业知识产权的流失,还可能带来竞争对手的复制和攻击。因此,采用强大的源代码加密工具已成为许多企业的必要措施。2024年&a…

深入探索 RUM 与全链路追踪:优化数字体验的利器

作者:梅光辉(重彦) 背景介绍 随着可观测技术的持续演进,多数企业已广泛采用 APM、Tracing 及 Logging 解决方案,以此强化业务监控能力,尤其在互联网行业,产品的体验直接关系着用户的口碑&…

Adaptive Graph Contrastive Learning for Recommendation

Adaptive Graph Contrastive Learning for Recommendation(KDD23) 源码: https://github.com/HKUDS/AdaGCL 摘要 图神经网络(GNNs)最近作为推荐系统中的有效协同过滤(CF)方法受到关注。基于GNN…

昇思MindSpore进阶教程-优化器

大家好,我是刘明,明志科技创始人,华为昇思MindSpore布道师。 技术上主攻前端开发、鸿蒙开发和AI算法研究。 努力为大家带来持续的技术分享,如果你也喜欢我的文章,就点个关注吧 模型训练过程中,使用优化器更…

BACnet MS/TP协议解析(3)

1、MS/TP帧格式 例如数据(hex):55 FF 01 03 02 00 00 D7 0x550xff0x010x030x020x000x000xD7BACnet数据BACnet数据CRC帧头帧类型目的地址源地址BACnet数据长度,大端CRC 2、帧类型 帧类型目前定义为 0-7,8-127 为 AS…

【Unity踩坑】Textmesh Pro是否需要加入Version Control?

问题:如果Unity 项目中用到了Textmesh pro,相关的文件是否也需要签入呢? 回答: 在使用 Unity 的 Version Control(例如 Plastic SCM 或 Git)时,如果你的项目中使用了 TextMesh Pro&#xff0c…

TCN预测 | MATLAB实现TCN时间卷积神经网络多输入单输出回归预测

TCN预测 | MATLAB实现TCN时间卷积神经网络多输入单输出回归预测 目录 TCN预测 | MATLAB实现TCN时间卷积神经网络多输入单输出回归预测预测效果基本介绍模型描述程序设计参考资料预测效果

武汉正向科技 格雷母线检测方式 :车检,地检

正向科技|格雷母线原理运用-车检,地检 地上检测方式 地址编码器和天线箱安装在移动站上,通过天线箱发射地址信号,地址解码器安装在固定站(地面)上,在固定站完成地址检测。 车上检测方式 地址编码器安装在…

MySQL Mail服务器集成:如何配置发送邮件?

MySQL Mail插件使用指南?怎么优化 MySQL发邮件性能? MySQL Mail服务器的集成,使得数据库可以直接触发邮件发送,极大地简化了应用架构。AokSend将详细介绍如何配置MySQL Mail服务器,以实现邮件发送功能。 MySQL Mail&…

SegFormer网络结构的学习和重构

因为太多的博客并没有深入理解,本文是自己学习后加入自己深入理解的总结记录,方便自己以后查看。 segformer中encoder、decoder的详解。 学习前言 一起来学习Segformer的原理,如果有用的话,请记得点赞关注哦。 一、Segformer的网络结构图 网络结构&…

JavaWeb 12.Tomcat10

希望明天能出太阳 或者如果没有太阳的话 希望我能变得更加阳光一点 —— 24.9.25 一、常见的JavaWeb服务器 Web服务器通常由硬件和软件共同构成 硬件:电脑,提供服务供其他客户电脑访问 软件:电脑上安装的服务器软件,安装后能提…

TIOBE 编程指数 9 月排行榜公布 VB.Net第七

原文地址:百度安全验证 IT之家 9 月 8 日消息,TIOBE 编程社区指数是一个衡量编程语言受欢迎程度的指标,评判的依据来自世界范围内的工程师、课程、供应商及搜索引擎,今天 TIOBE 官网公布了 2024 年 9 月的编程语言排行榜&#xf…

介绍 Agent Q:迎接下一代 AI 自动化助手

引言 在科技领域,随着人工智能的不断进步,自动化工具日益成为提升效率的重要手段。今天,我将向大家介绍一款名为 Agent Q 的 AI 自动化助手。这款工具不仅能够完成复杂的任务,还支持交互式命令行操作,使得用户体验更为…