数据可视化Python实现超详解【数据分析】
个人主页:在线OJ的阿川
大佬的支持和鼓励,将是我成长路上最大的动力
阿川水平有限,如有错误,欢迎大佬指正


Python 初阶
Python–语言基础与由来介绍
Python–注意事项
Python–语句与众所周知
数据清洗前 基本技能
数据分析—技术栈和开发环境搭建
数据分析—Numpy和Pandas库基本用法及实例
数据可视化前 必看
数据分析—三前奏:获取/ 读取/ 评估数据
数据分析—数据清洗操作及众所周知
数据分析—数据整理操作及众所周知
数据分析—统计学基础及Python具体实现
目录
- 可视化介绍
- 一维图表
- 补充的话
- 二维图表
- 补充的话
- 多维图表
- 补充的话
- 互相对比
可视化介绍
可视化是数据分析中 很重要 的一个环节
- 一图胜千言
- 发现隐藏的关系、趋势、影响
- 可视化本身也是一种探索数据,分析数据的方式
- 可视化中的图表可从维度主要分为一维图表和二维图表和多维图表及互相对比图表

- 主要用的库为:seaborn和matplotlib
- 在cmd中安装pip install seaborn和pip install matplotlib


阿里云的镜像源:
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
- 在jupyter中导入
- import seaborn as sns
- import matplotlib.pyplot as plt
- 大部分我们使用的功能都在pyplot的子模板下

一维图表
一维图表
- 直方图 Histogram
- 表示数据分布
- 有助于展示数据频率分布
- 横轴:数据范围
- 纵轴:个数
- 即一个数值变量.
- 表示数据分布

- sns.histplot(变量名)

- 密度图 KernelDensity
- 表示数据分布
- 用平滑的曲线,更易看出分布形状
- 表示数据分布

- sns.kdeplot(变量名)

- 箱型图 BoxPlot

- 其中上界为最大值或者上界等于第三四分位数加上1.5×四分位距,跟上界进行比较,谁小取谁,作为上界

- 其中下界为最小值或者下界等于第一四分位数减去1.5×四分位距,跟下界进行比较,谁大取谁,作为下界

这样做的好处是可以帮助我们发现数据当中的异常值
- sns.boxplot(变量名)

- 小提琴图 ViolinPlot
- 结合了密度图、直方图、箱形图
- 横轴:数据分布
- 纵轴:概率密度

- sns.violinplot(变量名)

补充的话
上述这些一维图表中参数可以传入DataFrame
(DataFrame名,x=" “,y=” ")


若要更改一维图表中的标题标签
plt.title(" ")
更改 x轴标签
plt.xlabel(" ")
更改 y轴标签
plt.ylabel(" ")

因为matplotlib库中默认的字体,它不支持中文,所以要自己手动更换支持中文的字体
查看支持中文的字体,如下:
import matplotlib.pyplot as plt
import seaborn as sns
from matplotlib.font_manager import FontManagerfont_manager = FontManager()
print(set(f.name for f in font_manager.ttflist))
更换字体,如下:
matplotlib.rc("font",family='Heiti TC')
二维图表
- 折线图 LinePlot
- 用于展示连续间隔或时间跨度上数值的变化,从而看出趋势变化
- 两个 数值变量
- 加一个颜色,即可多表示一个分类变量

- sns.lineplot(data=DataFrame名,x=" “,y=” ")

- 饼图 PiePlot
- 展示各个分类对应数值之间的比例
- 一个分类变量,一个数值变量

- plt.pie(DataFrame名[“数值变量列]”,labels=DataFrame名[“分类变量列”])
- autopct="%.1f%%" 该参数可以显示百分比,%可以告诉系统,这是用来展示格式字符串,%%告诉系统,这是百分比结尾

- 散点图 ScatterPlot
- 展示两个数值变量关系
- 可以看出两个变量之间的相关性
- x轴:一个变量的值
- y轴:一个变量的值
- 展示两个数值变量关系

- sns.scatterplot(DataFrame名,x=" “,y=” ")
- 或者 sns.scatterplot(x=DataFrame[" “],y=DataFrame[” "])

- 条形图 BarPlot
- 横轴:分类类别
- 纵轴:数值
- 一个分类变量加一个数值变量

- sns.barplot(data=DataFrame名,x=" “,y=” ")
- estimator 该参数可以指定纵轴的高度对应所属分类下的所有值的样式,不写该参数,则默认纵轴高度对应所属分类下的所有值的平均值


但在条形图基础上,若纵轴想记录个数,则用
- 计数图 countplot
- sns.countplot(data=DataFrame名, x=" ") Y轴自动聚合成x里面的个数

补充的话
上述图表的颜色有点不合时宜,更新颜色
color="颜色 " 或者 sns. set_palette(" 色盘")


常用的颜色有:

这里推荐这个网站:中国色,里面有非常多美丽的颜色,调色师、设计师必备哦

常用的色板有:



多维图表
更多维
用面积大小和颜色来区分新的变量
- 气泡图
-
引入新的数值变量,用面积大小来区分

-
plt.scatterplot(DataFrame,x=" “,y=” “,size=” ")
-

- 热力图 Heatmap
- 两个分类变量加一个数值变量
- x轴和y轴分别表示不同的分类变量,颜色代表数值变量

- plt.heatmap(annot=True)
- annot 该参数表示具体数值展示出来

- 复式条形图
- 在条形图的基础上引入多个条柱,则表示多个分类变量

- sns.barplot(data=DataFrame名,x=" “,y=” ",hue="分类变量 " )

补充的话
在基础图表的基础上加一种颜色加一下面积大小,即可表示更多的变量
plt.scatterplot(DataFrame,x=" “,y=” “,hue=” “,size=” ")

更改图例位置:
plt.legend(bbox_to_anchor=( 数字1 ,数字2))
- 数字1中有零/一可能性,数字2中有零/一可能性
- 数字一的零表示图例在图表的左边,一表示在图表的右边。
- 数字二的零表示图例在图表的下面,一表示在图表的上面。

互相对比
将这些图表互相对比,挖掘出更多信息
在同一个单元格里输入 多个相同的图表的公式
最后plt.show() 出来
此时多个相同图表就在一个图上了。
- binwidth 该参数可以改变图表的长度
- label 该参数为图例标签
例如以直方图为例
那么最后呈现的结果若没有展现出图例标签,则再加一个plt.legend()

密度图也是同样的道理,但不需要binwidth参数,因为它是一条平滑的曲线。

箱形图
- 没有label和binwidth参数,只有y轴/x轴参数

小提琴图也是同样的道理

但会显得很拥挤,更好选择是将分类变量作为x轴的变量,即x=" "
若想将不同的类型的图 并排放在一起
fig,axes=plt.subplots(行,列,figsize=(高,宽))
- fig 代表大图
- axis代表小图

这里是绘制空白图
在想要的图形种类中,加入ax参数=axes[n]
- n表示第n个子图,n从0开始

配对图 pairplot
- 能将DataFrame中的数值变量两两关系分布出来
- 将各变量的分布用直方图绘制出来
- 将不同变量两两之间的关系绘制成散点图
- sns.pairplot(,hue=" 分类变量")
- 可以探讨不同分类变量之间的数值关系


好的,到此为止啦,祝您变得更强

想说的话
实不相瞒,写的这篇博客写了十一个小时(加上自己学习和纸质笔记,共十三小时吧),很累,希望大佬支持

| 道阻且长 行则将至 |
|---|
个人主页:在线OJ的阿川
大佬的支持和鼓励,将是我成长路上最大的动力 
相关文章:
数据可视化Python实现超详解【数据分析】
各位大佬好 ,这里是阿川的博客,祝您变得更强 个人主页:在线OJ的阿川 大佬的支持和鼓励,将是我成长路上最大的动力 阿川水平有限,如有错误,欢迎大佬指正 Python 初阶 Python–语言基础与由来介绍 Python–…...
Maxkb玩转大语言模型
Maxkb玩转大语言模型 随着国外大语言模型llama3的发布,搭建本地个人免费“人工智能”变得越来越简单,今天博主分享使用Max搭建本地的个人聊天式对话及个人本地知识域的搭建。 1.安装Maxkb开源应用 github docker快速安装 docker run -d --namemaxkb -p 8…...
React Hooks 封装可粘贴图片的输入框组件(wangeditor)
需求是需要一个文本框 但是可以支持右键或者ctrlv粘贴图片,原生js很麻烦,那不如用插件来实现吧~我这里用的wangeditor插件,初次写初次用,可能不太好,但目前是可以达到实现需求的一个效果啦!后面再改进吧~ …...
Wireshark TS | 应用传输丢包问题
问题背景 仍然是来自于朋友分享的一个案例,实际案例不难,原因也就是互联网线路丢包产生的重传问题。但从一开始只看到数据包截图的判断结果,和最后拿到实际数据包的分析结果,却不是一个结论,方向有点跑偏,…...
架构设计-web项目中跨域问题涉及到的后端和前端配置
WEB软件项目中经常会遇到跨域问题,解决方案早已是业内的共识,简要记录主流的处理方式: 跨域感知session需要解决两个问题: 1. 跨域问题 2. 跨域cookie传输问题 跨域问题 解决跨域问题有很多种方式,如使用springboot…...
==Redis淘汰策略(内存满了触发)==
好的,面试官。这个问题我需要从三个方面来回答。第一个方面: 当 Redis 使用的内存达到 maxmemory 参数配置的阈值的时候,Redis 就会根据配置的内存淘汰策略。 把访问频率不高的 key 从内存中移除。maxmemory 默认情况是当前服务器的最大内存…...
2024年高考作文考人工智能,人工智能写作文能否得高分
前言 众所周知,今年全国一卷考的是人工智能,那么,我们来测试一下,国内几家厉害的人工智能他们的作答情况,以及能取得多少高分呢。由于篇幅有限,我这里只测试一个高考真题,我们这里用百度的文心…...
Vue3学习记录第三天
Vue3学习记录第三天 背景说明学习记录Vue3中shallowReactive()和shallowRef()Vue3中toRaw()和markRaw()前端...语法Vue3中readonly()和shallowReadonly()函数前端的防抖 背景 之前把Vue2的基础学了, 这个课程的后面有简单介绍Vue3的部分. 学习知识容易忘, 这里仅简答做一个记录…...
数仓建模中的一些问题
在数仓建设的过程中,由于未能完全按照规范操作, 从而导致数据仓库建设比较混乱,常见有以下问题: 数仓常见问题 ● 数仓分层不清晰:数仓的分层没有明确的逻辑,难以管理和维护。 ● 数据域划分不明确…...
spring整合kafka
原文链接:spring整合kafka_spring集成kafka-CSDN博客 1、导入依赖 <dependency><groupId>org.springframework.kafka</groupId><artifactId>spring-kafka</artifactId><version>2.5.10.RELEASE</version> </depende…...
【web前端】CSS样式
CSS应用方式 在标签 <h2 style"color: aquamarine">hello world!</h2> 在head标签中写style标签 <head><meta charset"UTF-8"><title>Title</title><style>.c1{height: 100px;}.c2{height: 200px;color: aqua;…...
【ARM Cache 与 MMU 系列文章 7.7 – ARMv8/v9 MMU Table 表分配原理及其代码实现 1】
请阅读【ARM Cache 及 MMU/MPU 系列文章专栏导读】 及【嵌入式开发学习必备专栏】 文章目录 MMU Table 表分配原理及其代码实现虚拟地址空间 Region的配置系统物理地址位宽获取汇编代码实现MMU Table 表分配原理及其代码实现 假设当前系统中需要映射多个region,其中第一个要映…...
AIGC之MetaHuman:HeyGen(基于AI驱动的视频生成平台+数字人)的简介、安装和使用方法、案例应用之详细攻略
AIGC之MetaHuman:HeyGen(基于AI驱动的视频生成平台数字人)的简介、安装和使用方法、案例应用之详细攻略 目录 HeyGen的简介 1、HeyGen是一款AI视频生成平台,它提供以下关键功能: HeyGen的安装和使用方法 1、使用方法 01创建或选择一个头…...
6.7-6.10作业
1. /*1.使用switch实现银行系统,默认用户为A,密码为1234,余额2000 如果登录失败,则直接结束 如果登录成功,则显示银行页面 1.查询余额 2.取钱 3.存钱 如果是1,则打印余额 如果是2,则输入取钱金…...
【Redis】Redis经典问题:缓存穿透、缓存击穿、缓存雪崩
目录 缓存的处理流程缓存穿透解释产生原因解决方案1.针对不存在的数据也进行缓存2.设置合适的缓存过期时间3. 对缓存访问进行限流和降级4. 接口层增加校验5. 布隆过滤器原理优点缺点关于扩容其他使用场景SpringBoot 整合 布隆过滤器 缓存击穿产生原因解决方案1.设置热点数据永不…...
从GPU到ASIC,博通和Marvell成赢家
ASIC市场上,博通预计今年AI收入将达到110亿美元以上,主要来自与Google和Meta的合作;Marvell预计2028年AI收入将达到70亿至80亿美元,主要来自与Amazon和Google的合作。 随着芯片设计和系统复杂性的增加,科技大厂将更多地…...
【java问答小知识6】一些Java基础的知识,用于想学习Java的小伙伴们建立一些简单的认知以及已经有经验的小伙伴的复习知识点
请解释Java中的双亲委派模型是什么? 回答:双亲委派模型是Java类加载机制的核心原则,它确保所有类加载器在尝试加载一个类之前,都会委托给它的父类加载器。 Java中的类路径(Classpath)是什么? 回…...
数学建模笔记
数学建模 定义角度 数学模型是针对参照某种事物系统的特征或数量依存关系,采用数学语言,概括地或近似地表述出的一种数学结构,这种数学结构是借助于数学符号刻画出来的某种系统的纯关系结构。从广义理解,数学模型包括数学中的各…...
shell编程(三)—— 控制语句
程序的运行除了顺序运行外,还可以通过控制语句来改变执行顺序。本文介绍bash的控制语句用法。 一、条件语句 Bash 中的条件语句让我们可以决定一个操作是否被执行。结果取决于一个包在[[ ]]里的表达式。 bash中的检测命令由[[]]包起来,用于检测一个条…...
反射学习记
Java 中的反射是什么意思?有哪些应用场景? 每个类都有⼀个 Class 对象,包含了与类有关的信息。当编译⼀个新类时,会产生一个同名的 .class 文件,该⽂件 内容保存着 Class 对象。类加载相当于 Class 对象的加载&a…...
golang循环变量捕获问题
在 Go 语言中,当在循环中启动协程(goroutine)时,如果在协程闭包中直接引用循环变量,可能会遇到一个常见的陷阱 - 循环变量捕获问题。让我详细解释一下: 问题背景 看这个代码片段: fo…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
安卓基础(aar)
重新设置java21的环境,临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的: MyApp/ ├── app/ …...
代码随想录刷题day30
1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...
【SpringBoot自动化部署】
SpringBoot自动化部署方法 使用Jenkins进行持续集成与部署 Jenkins是最常用的自动化部署工具之一,能够实现代码拉取、构建、测试和部署的全流程自动化。 配置Jenkins任务时,需要添加Git仓库地址和凭证,设置构建触发器(如GitHub…...
算法打卡第18天
从中序与后序遍历序列构造二叉树 (力扣106题) 给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。 示例 1: 输入:inorder [9,3,15,20,7…...
【Linux】Linux安装并配置RabbitMQ
目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的,需要先安…...
2025-05-08-deepseek本地化部署
title: 2025-05-08-deepseek 本地化部署 tags: 深度学习 程序开发 2025-05-08-deepseek 本地化部署 参考博客 本地部署 DeepSeek:小白也能轻松搞定! 如何给本地部署的 DeepSeek 投喂数据,让他更懂你 [实验目的]:理解系统架构与原…...
spring boot使用HttpServletResponse实现sse后端流式输出消息
1.以前只是看过SSE的相关文章,没有具体实践,这次接入AI大模型使用到了流式输出,涉及到给前端流式返回,所以记录一下。 2.resp要设置为text/event-stream resp.setContentType("text/event-stream"); resp.setCharacter…...
