Pandas实战100例 | 案例 9: 数据重塑 - `pivot` 和 `melt`

案例 9: 数据重塑 - pivotmelt

知识点讲解

在 Pandas 中,pivotmelt 是用于数据重塑的两个强大工具。pivot 可以帮助你重新排列数据的格式,使其更加适合分析。而 melt 是进行“熔化”操作的,它可以将数据从宽格式转换为长格式。

  • pivot 用于创建一个新的派生表格,其中一列的值会成为多个列的标题。
  • melt 将 DataFrame 从宽格式转换为长格式,通常用于将多列合并成两列,一列存储变量名,另一列存储值。
示例代码

使用 pivot

# 原始数据
data = {'Date': ['2023-01-01', '2023-01-02', '2023-01-03'],'Type': ['A', 'B', 'C'],'Value': [100, 200, 300]}
df = pd.DataFrame(data)# 使用 pivot
pivot_df = df.pivot(index='Date', columns='Type', values='Value')
print(pivot_df)

这段代码演示了如何使用 pivot 方法。我们首先创建了一个包含日期、类型和值的简单 DataFrame。然后,我们使用 pivot 方法,将 Date 列作为索引,Type 列的唯一值作为新的列,并以 Value 列的值填充这些新列。

使用 melt

# 使用 melt
melted_df = df.melt(id_vars=['Date'], value_vars=['Type', 'Value'])
print(melted_df)

这段代码展示了 melt 方法的使用。我们将 Date 列作为标识变量列(保持不变),然后将 TypeValue 列“熔化”成两列,其中一列存储了原始列名(Type, Value),另一列存储了相应的值。

数据重塑是数据预处理中的一个关键步骤,可以大大改善数据的可读性和适应性。

案例 9: 数据重塑 - pivotmelt(续)

示例代码运行结果

使用 pivot

import pandas as pd# 准备数据和示例代码的运行结果,用于案例 9# 原始数据
data = {'Date': ['2023-01-01', '2023-01-02', '2023-01-03'],'Type': ['A', 'B', 'C'],'Value': [100, 200, 300]}
df = pd.DataFrame(data)# 使用 pivot
pivot_df = df.pivot(index='Date', columns='Type', values='Value')# 使用 melt
melted_df = df.melt(id_vars=['Date'], value_vars=['Type', 'Value'])pivot_df, melted_df

运行结果:

Type            A      B      C
Date                           
2023-01-01  100.0    NaN    NaN
2023-01-02    NaN  200.0    NaN
2023-01-03    NaN    NaN  300.0

这个结果显示了 pivot 方法如何将原始数据转换为新格式,其中日期作为索引,不同的 Type 值(A, B, C)作为列标题。

使用 melt

melted_df = df.melt(id_vars=['Date'], value_vars=['Type', 'Value'])
print(melted_df)

运行结果:

         Date variable value
0  2023-01-01     Type     A
1  2023-01-02     Type     B
2  2023-01-03     Type     C
3  2023-01-01    Value   100
4  2023-01-02    Value   200
5  2023-01-03    Value   300

在这个结果中,melt 方法将数据转换为长格式,其中 Date 列保持不变,而 TypeValue 列的内容被合并到两个新列中。

通过这样的数据重塑操作,你可以根据需要将数据结构从宽格式转换为长格式,或反之,以适应不同的分析需求。

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

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

相关文章

C#,入门教程(14)——字符串与其他数据类型的转换

上一篇: C#,入门教程(13)——字符(char)及字符串(string)的基础知识https://blog.csdn.net/beijinghorn/article/details/123928151 数据只有可视化才能更好地体现其价值,因而 string 与 image…

Java循环语句

1:for循环结构 循环结构有三种语句,分别是: for循环 while循环 do…while循环 这三种循环可以做相同的事情,当然它们也有小的区别 1.1 for循环结构 这段代码的作用,是用来展示手机信息1000次。 还提到了这里的几…

能见度监测站在交通中有哪些作用

【TH-NJD10】能见度监测站在交通中的作用主要体现在以下几个方面: 提高交通安全:能见度是影响交通安全的重要因素之一。能见度监测站可以实时监测并发布路面或空中的能见度数据,帮助驾驶员和交通管理部门做出安全决策。在低能见度情况下&…

组合和聚合

不是c的语法要求,是一种建模思想 目录 1.组合 1. 使用 -- 在一个类中创建另外一个类的对象 代码中的解释: 代码结果: 组合: 2. 使用 -- 在一个类中创建另外一个类的指针 2.使用类定义一个指针 -- 不是创建一个对象 3.聚合 1. 使…

Python自动化测试数据驱动解决数据错误

数据驱动将测试数据和测试行为完全分离,实施数据驱动测试步骤如下: A、编写测试脚本,脚本需要支持从程序对象、文件或者数据库读入测试数据; B、将测试脚本使用的测试数据存入程序对象、文件或者数据库等外部介质中;…

超全的Vim常用快捷键,建议收藏

一、移动光标 h j k l 上 下 左 右ctrl-y 上移一行ctrl-e 下移一行ctrl-u 上翻半页(up)ctrl-d 下翻半页(down)ctrl-f 上翻一页(forward)ctrl-b 下翻一页(backward)w 跳到下一个字首…

MySQL5.7 InnoDB 磁盘结构之Table

官网地址:MySQL :: MySQL 5.7 Reference Manual :: 14.6.1.1 Creating InnoDB Tables 欢迎关注留言,我是收集整理小能手,工具翻译,仅供参考,笔芯笔芯. MySQL 5.7 参考手册 / ... / 创建 InnoDB 表 14.6.1.1 创建In…

密码输入检测 - 华为OD统一考试

OD统一考试(C卷) 分值: 100分 题解: Java / Python / C++ 题目描述 给定用户密码输入流input,输入流中字符 ‘<’ 表示退格,可以清除前一个输入的字符,请你编写程序,输出最终得到的密码字符,并判断密码是否满足如下的密码安全要求。 密码安全要求如下: 密码长度&…

浅研究下 DHCP 和 chrony

服务程序&#xff1a; 1.如果有默认配置&#xff0c;请先备份&#xff0c;再进行修改 2.修改完配置文件&#xff0c;请重启服务或重新加载配置文件&#xff0c;否则不生效 有些软件&#xff0c;安装包的名字和系统里服务程序的名字不一样&#xff08;安装包名字&#xff1a;…

MySQL插入、更新和删除

文章目录 一、插入数据1. 插入完整的行省略列提高整体性能 2. 插入多个行3. 插入检索出的数据 二、更新数据三、删除数据四、更新和删除的指导原则五、创建和操作表1. 创建表1.1 表创建基础1.2 使用NULL值1.3 主键1.4 使用AUTO_INCREMENT1.5 指定默认值1.6 引擎类型 2. 更新表小…

鸿蒙HarmonyOS-HTTP网络数据请求

鸿蒙HarmonyOS-HTTP网络数据请求 文章目录 鸿蒙HarmonyOS-HTTP网络数据请求导入模块示例 导入模块 import http from ohos.net.http;示例 // 引入包名 import http from ohos.net.http;// 每一个httpRequest对应一个HTTP请求任务&#xff0c;不可复用 let httpRequest http.…

【Spring Cloud】Sentinel流量限流和熔断降级的讲解

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是Java方文山&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的专栏《Spring Cloud》。&#x1f3af;&#x1f3af; &am…

golang 反序列化出现json: cannot unmarshal string into Go value of type model.Phone

项目场景&#xff1a; 今天在项目公关的过程中&#xff0c;需要对interface{}类型进行转换为具体结构体 问题描述 很自然的用到了resultBytes, _ : json.Marshal(result)&#xff0c;然后对resultBytes进行反序列化转换为对应的结构体err : json.Unmarshal(resultBytes, &…

OpenCV-Python(35):BRIEF算法

算法介绍 BRIEF&#xff08;Binary Robust Independent Elementary Features&#xff09;是一种用于计算机视觉中特征点描述子的算法。它是一种二进制描述子&#xff0c;通过比较图像上不同位置的像素值来生成特征点的描述子。 BRIEF算法的基本思想是选取一组固定的像素对&…

12GoF之代理模式

解决问题的思维&#xff1a;AOP 解决问题技术&#xff1a;代理技术 代理技术太麻烦&#xff0c;因此使用框架 Spring AOP框架&#xff08;底层是代理技术&#xff1a;jdk动态daili&#xff0c;cglib&#xff09; 代理模式是GoF23种设计模式之一。属于结构型设计模式。 代理…

做一个个人博客第一步该怎么做?

做一个个人博客第一步该怎么做&#xff1f; 好多零基础的同学们不知道怎么迈出第一步。 那么&#xff0c;就找一个现成的模板学一学呗&#xff0c;毕竟我们是高贵的Ctrl c v 工程师。 但是这样也有个问题&#xff0c;那就是&#xff0c;那些模板都&#xff0c;太&#xff01;…

C 语言每日一题——旋转数组的最小数字

一、题目内容 提供一下该OJ题的链接&#xff1a;旋转数组的最小数字_牛客题霸_牛客网 (nowcoder.com) 二、题目分析 通过示例1可知&#xff0c;我们写代码的目的是在数组中找到一个最大值&#xff0c;并且返回来&#xff1b; 我们很容易的会想到创建一个变量&#xff1a;int…

【Linux】 nohup命令使用

nohup命令 nohup是Linux和Unix系统中的一个命令&#xff0c;其作用是在终端退出时&#xff0c;让进程在后台继续运行。它的全称为“no hang up”&#xff0c;意为“不挂起”。nohup命令可以让你在退出终端或关闭SSH连接后继续运行命令。 nohup 命令&#xff0c;在默认情况下&…

pyx文件编译为pyd/so文件(分别在windows/linux系统下)

Python有以下几种类型的文件&#xff1a; py&#xff1a;Python控制台程序的源代码文件pyx&#xff1a;是Python语言的一个编译扩展&#xff0c;它实际上是Cython语言的源代码文件&#xff08;可以理解为既支持Python语言也支持C/C&#xff09;。pyc&#xff1a;Python字节码文…

DevOps搭建(十六)-Jenkins+K8s部署详细步骤

​ 1、整体部署架构图 2、编写脚本 vi pipeline.yml apiVersion: apps/v1 kind: Deployment metadata:namespace: testname: pipelinelabels:app: pipeline spec:replicas: 2selector:matchLabels:app: pipelinetemplate:metadata:labels:app: pipelinespec:containers:- nam…