pandas(11 分类数据和数据可视化)
前面内容:pandas(10 日期和Timedelta)
目录
一、Python Pandas 分类数据
1.1 pd.Categorical()
1.2 describe()
1.3 获取类别的属性
1.4 分类操作
1.5 分类数据的比较
二、Python Pandas 数据可视化
2.1 基础绘图:plot
2.2 条形图
2.3 直方图
2.4 箱线图
2.5 面积图
2.6 散点图
2.7 饼图
一、Python Pandas 分类数据
在 pandas 中,分类数据(Categorical data) 是一种特殊的数据类型,它通过将数据分为不同的类别来有效地减少内存使用并提高性能。它在处理具有有限数量的可能值(如性别、状态、等级等)的列时非常有用。
对象创建
分类对象可以通过多种方式创建。以下是不同的方式描述:
分类
在Pandas对象创建时,将dtype指定为”category”。
例1:
import pandas as pds = pd.Series(["a","b","c","a"], dtype="category")
print(s)
运行结果:

传递给系列对象的元素数量是四个,但类别只有三个。观察输出的类别。
创建分类数据
你可以使用 pandas.Categorical 或 Series.astype('category') 方法将数据转换为分类类型。
1.1 pd.Categorical()
pd.Categorical() 是 pandas 库中的一个功能强大的函数,用于将数据转换为分类类型。
pd.Categorical()语法
pd.Categorical(values, categories=None, ordered=False, dtype=None)
参数:
- values: 要转换为分类类型的数据,可以是列表、numpy 数组或者 pandas Series。
- categories: 一个列表,指定分类的取值。如果没有提供,pandas 会自动推断这些类别。
- ordered: 布尔值(默认为
False)。如果设置为True,表示类别之间有顺序(可以进行大于、小于等比较操作)。 - dtype: 可选的,指定分类的类型,例如
category。
例1.2:pd.Categorical()
import pandas as pdcat = pd.Categorical(['a', 'b', 'c', 'a', 'b', 'c'])
print cat
运行结果:
![]()
例1.2 :
import pandas as pd
cat = cat=pd.Categorical(['a','b','c','a','b','c','d'], ['c', 'b', 'a'])
print(cat)
运行结果:

例1.3: ordered = True
import pandas as pd
cat = cat=pd.Categorical(['a','b','c','a','b','c','d'], ['c', 'b', 'a'],ordered=True)
print(cat)
运行结果:
![]()
1.2 describe()
在分类数据上使用 .describe() 命令,我们得到与 Series 或 DataFrame 类型的字符串相似的输出。
例1.4: df.describe()
import pandas as pd
import numpy as npcat = pd.Categorical(["a", "c", "c", np.nan], categories=["b", "a", "c"])
df = pd.DataFrame({"cat":cat, "s":["a", "c", "c", np.nan]})print(df.describe())
print('-'*50)
print(df["cat"].describe())
运行结果:

1.3 获取类别的属性
obj.cat.categories 命令用于获取对象的 类别 。
例1.5:返回分类数据的类别列表
import pandas as pd
import numpy as nps = pd.Categorical(["a", "c", "c", np.nan], categories=["b", "a", "c"])
print(s.categories)
运行结果:
![]()
例1.6: 否有顺序
import pandas as pd
import numpy as npcat = pd.Categorical(["a", "c", "c", np.nan], categories=["b", "a", "c"])
print(cat.ordered)
运行结果:
![]()
1.4 分类操作
通过为 series.cat.categories 属性赋新值来重命名分类。
例1.7: 重命名分类
import pandas as pd# 创建一个包含分类数据的 Series
s = pd.Series(["a", "b", "c", "a"], dtype="category")# 获取当前类别,并修改它
new_categories = ["Group %s" % g for g in s.cat.categories]# 使用新的类别创建一个新的 Categorical 类型
s = pd.Series(s.cat.codes, dtype=pd.CategoricalDtype(categories=new_categories, ordered=False))# 打印更新后的类别
print(s.cat.categories)
运行结果:
![]()
例1.8:添加新类别
import pandas as pds = pd.Series(["a","b","c","a"], dtype="category")
s = s.cat.add_categories([4])
print(s.cat.categories)
运行结果:
![]()
例1.9 :移除分类
使用 Categorical.remove_categories() 方法,可以移除不需要的分类。
import pandas as pds = pd.Series(["a","b","c","a"], dtype="category")
print(s)
print('-'*50)
print(s.cat.remove_categories("a"))
运行结果:

1.5 分类数据的比较
在 pandas 中,分类数据(Categorical 类型)支持比较操作,特别是当你使用有序类别(ordered=True)时,能够进行基于顺序的比较,例如 <、>、== 等。分类数据通常用于具有有限、固定类别的数据,并且在处理时可以提高性能,特别是当类别数据具有某种顺序时。
分类数据比较的基本操作
-
无序类别比较(
ordered=False): 如果分类数据是无序的,不能进行大小比较,但可以检查是否相等。 -
有序类别比较(
ordered=True): 如果分类数据是有序的(即ordered=True),则可以执行基于顺序的比较。
例1.10:
import pandas as pd# 创建 Categorical 类型的 dtype,并指定类别和顺序
cat_dtype = pd.CategoricalDtype(categories=[1, 2, 3], ordered=True)# 创建第一个 Series
cat = pd.Series([1, 2, 3]).astype(cat_dtype)# 创建第二个 Series
cat1 = pd.Series([2, 2, 2]).astype(cat_dtype)# 进行比较
print(cat > cat1)
运行结果:

二、Python Pandas 数据可视化
2.1 基础绘图:plot
这个功能在Series和DataFrame上只是一个对matplotlib库plot()方法的简单封装。
例1:
import pandas as pd
import numpy as npdf = pd.DataFrame(np.random.randn(10,4),index=pd.date_range('1/1/2000',periods=10), columns=list('ABCD'))df.plot()
运行结果:

2.2 条形图
例2:条形图(.bar)
import pandas as pd
import numpy as npdf = pd.DataFrame(np.random.rand(10,4),columns=['a','b','c','d'])
df.plot.bar()
运行结果:

例3:可堆叠 (stacked=True)
df.plot.bar(stacked=True)
运行结果:

例4:横向(barh)
df.plot.barh(stacked=True)
运行结果:

2.3 直方图
可以使用 plot.hist() 方法绘制直方图。我们可以指定条柱的数量。
例5: 直方图(hist )
import pandas as pd
import numpy as npdf = pd.DataFrame({'a':np.random.randn(1000)+1,'b':np.random.randn(1000),'c':
np.random.randn(1000) - 1}, columns=['a', 'b', 'c'])df.plot.hist(bins=20)
运行结果:

要为每列绘制不同的直方图,请使用以下代码−
例6:(.diff.hist)
import pandas as pd
import numpy as npdf=pd.DataFrame({'a':np.random.randn(1000)+1,'b':np.random.randn(1000),'c':
np.random.randn(1000) - 1}, columns=['a', 'b', 'c'])df.diff().hist(bins=20)
运行结果:

2.4 箱线图
可调用 Series.box.plot() 和 DataFrame.box.plot() ,或 DataFrame.boxplot() 来可视化每列数值的分布。
例7: 箱线图(box)
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.rand(10, 5), columns=['A', 'B', 'C', 'D', 'E'])
df.plot.box()
运行结果:

2.5 面积图
可以使用 Series.plot.area() 或 DataFrame.plot.area() 方法创建面积图。
例8:面积图(area)
import pandas as pd
import numpy as npdf = pd.DataFrame(np.random.rand(10, 4), columns=['a', 'b', 'c', 'd'])
df.plot.area()
运行结果:

2.6 散点图
可以使用 DataFrame.plot.scatter() 方法来创建散点图。
例9:散点图(scatter)
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.rand(50, 4), columns=['a', 'b', 'c', 'd'])
df.plot.scatter(x='a', y='b')
运行结果:

2.7 饼图
例10:饼图(pie)
import pandas as pd
import numpy as npdf = pd.DataFrame(3 * np.random.rand(4), index=['a', 'b', 'c', 'd'], columns=['x'])
df.plot.pie(subplots=True)
subplots=True 参数用于在绘制多个图形时将每一列或每一行的图形绘制到不同的子图(subplot)中。这样可以帮助你在同一画布上并排展示多个图形。
此外,饼图必须 subplots=True
运行结果:

相关文章:
pandas(11 分类数据和数据可视化)
前面内容:pandas(10 日期和Timedelta) 目录 一、Python Pandas 分类数据 1.1 pd.Categorical() 1.2 describe() 1.3 获取类别的属性 1.4 分类操作 1.5 分类数据的比较 二、Python Pandas 数据可视化 2.1 基础绘图:plot 2.2 条形图 2.3 直方…...
Redis 03章——10大数据类型概述
一、which10 (1)一图 (2)提前声明 这里说的数据类型是value的数据类型,key的类型都是字符串 官网:Understand Redis data types | Docs (3)分别是 1.3.1redis字符串࿰…...
bps是什么意思
本文来自DeepSeek "bps" 是 "bits per second" 的缩写,表示每秒传输的比特数,用于衡量数据传输速率。1 bps 即每秒传输 1 比特。 常见单位 bps:比特每秒 Kbps:千比特每秒(1 Kbps 1,000 bps&am…...
撕碎QT面具(1):Tab Widget转到某个Tab页
笔者未系统学过C语法,仅有Java基础,具体写法仿照于大模型以及其它博客。自我感觉,如果会一门对象语言,没必要先刻意学C,因为自己具有对象语言的基础,等需要用什么再学也不迟。毕竟不是专门学C去搞算法。 1…...
PCL源码分析:点云数学形态学操作
文章目录 一、简介二、源码分析三、实现效果参考资料一、简介 基本原理:使用结构元素(通常为滤波的窗口)的窗口模板作为处理单元,利用形态学中的膨胀与腐蚀相组合即可达到滤波的效果。 点云数据中的数学形态学运算其实和二维图像上的运算非常相似,图像上像素有x,y和亮度值…...
项目版本号生成
需求 项目想要生成一个更新版本号,格式为v2.0.20250101。 其中v2.0为版本号,更新时进行配置;20250101为更新日期,版本更新时自动生成。 实现思路 创建一个配置文件version.properties,在其中配置版本号;…...
rtsp rtmp 跟 http 区别
一 会话管理 与SDP 1. RTSP(Real Time Streaming Protocol) (1) 是否需要建立会话? 需要显式会话。 RTSP 是基于会话的协议,客户端与服务端通过 SETUP、PLAY、TEARDOWN 等命令明确控制会话生命周期。 会话标识:通过…...
善筹网设计与实现(代码+数据库+LW)
摘 要 信息数据从传统到当代,是一直在变革当中,突如其来的互联网让传统的信息管理看到了革命性的曙光,因为传统信息管理从时效性,还是安全性,还是可操作性等各个方面来讲,遇到了互联网时代才发现能补上自…...
SQL SERVER的PARTITION BY应用场景
SQL SERVER的PARTITION BY关键字说明介绍 PARTITION BY关键字介绍具体使用场景排名计算累计求和分组求最值分组内百分比计算分组内移动平均计算分组内数据分布统计分组内数据偏移计算 总结 PARTITION BY关键字介绍 在SQL SERVER中,关键字PARTITION BY主要用于窗口函…...
使用 MindSpore 训练 DeepSeek-V3 模型
MindeSpore 已经适配 DeepSeek-V3 的训练推理啦,下面是使用 MindSpore 对DeepSeek-V3做训练的过程。 一、环境确认 这里呢我使用的是 8张 910B2 的显卡: 其中 MindSpore Transformers 的环境依赖如下: PythonMindSporeCANN固件与驱动3.1…...
生成对抗网络(GAN)的“对抗“过程解析:从图像合成到药物发现的跨领域应用
技术原理(数学公式示意图) 核心对抗公式 min G max D V ( D , G ) E x ∼ p d a t a [ log D ( x ) ] E z ∼ p z [ log ( 1 − D ( G ( z ) ) ) ] \min_G \max_D V(D,G) \mathbb{E}_{x\sim p_{data}}[\log D(x)] \mathbb{E}_{z\sim p_…...
DeepSeek R1完全本地部署实战教程01-课程大纲
一、课程体系 二、学习目标: 了解基础知识掌握安装部署学会搭建可视化界面能力水平进阶三、课程特点: 案例驱动工程实战完整体系四、课程大纲 1.DeepSeek R1 项目运行演示 【视频课程】 (1)可视化交互 (2)联网搜索 (3)本地知识库 2.环境安装部署 【视频课程】 (1)软…...
redis cluster测试
集群节点信息这时候停掉一个master 172.30.60.31 从集群信息集中我们可以看到172.30.60.31的slave是172.30.60.41,查看41的日志,发现他成为了新的master 这时候我们在将172.30.60.41也杀死,会发现集群异常了 尝试把172.30.60.31启动ÿ…...
跨平台AES/DES加密解密算法【超全】
算法说明 要实现在 WinForm、Android、iOS、Vue3 中使用 相同的算法,确保各平台加密结果互通 一、统一加密参数 算法: AES-256-CBC 密钥: 32字节(示例中使用固定字符串生成) IV: 16字节 填充模式: PKCS7 字符编码: UTF-8 输出格式: Base64二、各平台实现代码...
关于前后端分离跨域问题——使用DeepSeek分析查错
我前端使用ant design vue pro框架,后端使用kratos框架开发。因为之前也解决过跨域问题,正常是在后端的http请求中加入中间件,设置跨域需要通过的字段即可,代码如下所示: func NewHTTPServer(c *conf.Server, s *conf…...
数据恢复-01-机械硬盘的物理与逻辑结构
磁盘存储原理 磁盘存储数据的原理: 磁盘存储数据的原理是利用磁性材料在磁场作用下的磁化性质,通过在磁盘表面上划分成许多小区域,根据不同的磁化方向来表示0和1的二进制数据,通过读写磁头在磁盘上的移动,可以实现数据…...
pytest asyncio 支持插件 pytest-asyncio
pytest 是 Python 测试框架,但其不支持基于 asyncio 的异步程序(例如,测试 FastAPI 异步代码),pytest-asyncio 是一个 pytest 插件,该插件赋予 pytest 可以测试使用 asyncio 库代码的能力。 https://github…...
网络工程师 (35)以太网通道
一、概念与原理 以太网通道,也称为以太端口捆绑、端口聚集或以太链路聚集,是一种将多个物理以太网端口组合成一个逻辑通道的技术。这一技术使得多个端口能够并行工作,共同承担数据传输任务,从而提高了网络的传输能力和可靠性。 二…...
USB2.03.0摄像头区分UVC相机在linux中的常用命令
这里是引用 一. USB2.0 & 3.0接口支持区分 1.1. 颜色判断 USB接口的颜色并不是判断版本的可靠标准,但根据行业常见规范分析如下: USB接口颜色与版本对照表: 接口颜色常见版本内部触点数量传输速度黑色USB2.04触点480 Mbps (60 MB/s)白…...
【推理llm论文精度】DeepSeek-R1:强化学习驱动LLM推理能力飞跃
最近deepseek R1模型大火,正好复习一下他家的技惊四座的论文https://arxiv.org/pdf/2501.12948 近年来,大型语言模型(LLM)在推理能力上取得了显著进展,但如何进一步有效提升仍然是研究热点。DeepSeek-AI发布了 DeepS…...
从零搭建SpringBoot3+Vue3前后端分离项目基座,中小项目可用
文章目录 1. 后端项目搭建 1.1 环境准备1.2 数据表准备1.3 SpringBoot3项目创建1.4 MySql环境整合,使用druid连接池1.5 整合mybatis-plus 1.5.1 引入mybatis-plus1.5.2 配置代码生成器1.5.3 配置分页插件 1.6 整合swagger3(knife4j) 1.6.1 整…...
使用 Python 爬虫和 FFmpeg 爬取 B 站高清视频
以下是一个完整的 Python 爬虫代码示例,用于爬取 B 站视频并使用 FFmpeg 合成高清视频。 1. 准备工作 确保安装了以下 Python 库和工具: bash复制 pip install requests moviepy2. 爬取视频和音频文件 B 站的视频和音频文件通常是分开存储的&#x…...
学习数据结构(9)栈和队列上
1.栈的概念 栈是一种特殊的线性表,只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作 的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出(先进先出)的原则 栈的插入操作叫做进栈/压栈/入栈ÿ…...
【ESP32】ESP-IDF开发 | WiFi开发 | HTTP服务器
1. 简介 1.1 HTTP HTTP(Hyper Text Transfer Protocol),全称超文本传输协议,用于从网络服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档…...
hbase合并队列超长问题分析
问题现象 hbase集群合并队列超长,有节点上合并任务已经运行超过1天未结束,合并队列总长不断增加。 问题分析 参数配置: 配置参数默认值含义hbase.hregion.memstore.flush.size128MMemStore达到该值会Flush成StoreFilehbase.hregion.memstore.block.multiplier4当region中…...
【YOLOv11改进- 主干网络】YOLOv11+CSWinTransformer: 交叉窗口注意力Transformer助力YOLOv11有效涨点;
YOLOV11目标检测改进实例与创新改进专栏 专栏地址:YOLOv11目标检测改进专栏,包括backbone、neck、loss、分配策略、组合改进、原创改进等 本文介绍 发paper,毕业皆可使用。 本文给大家带来的改进内容是在YOLOv11中更换主干网络为CSWinTransformer,助力YOLOv11有效涨点,…...
滚动弹幕案例
滚动弹幕案例 一、需求 1.页面上漂浮字体大小不一、颜色不一,从左向右滚动的弹幕; 2.底部中间有一个发送功能,可以发送新的弹幕; 3.底部的发送部分可以向下收起和弹出。 二、html <div class"container"><…...
图像处理篇---基本OpenMV图像处理
文章目录 前言1. 灰度化(Grayscale)2. 二值化(Thresholding)3. 掩膜(Mask)4. 腐蚀(Erosion)5. 膨胀(Dilation)6. 缩放(Scaling)7. 旋转…...
Linux软件编程(2)
一、标准IO 1.fread/fwrite size_t fwrite (const void *ptr,size_t size,size_t nmemb,FILE *stream); 功能:函数从指定的内存位置开始,将一块数据写入到指定的文件流中。 参数: ptr:指向要写入文件的数据块的指针 size:要写入的每个数据…...
vue框架生命周期详细解析
Vue.js 的生命周期钩子函数是理解 Vue 组件行为的关键。每个 Vue 实例在创建、更新和销毁过程中都会经历一系列的生命周期阶段,每个阶段都有对应的钩子函数,开发者可以在这些钩子函数中执行特定的操作。 Vue 生命周期概述 Vue 的生命周期可以分为以下几…...
