第四章. Pandas进阶—数据转换

news2025/7/10 17:03:45

第四章. Pandas进阶

4.5 数据转换

数据转换一般包括一列数据转换成多列数据,行列转换,DataFrame转换为字典,列表和元组等

1.一列数据转换成多列数据(str.split函数)

1).语法:

DataFrame.str.split(pat=None,n=-1,expand=False)

参数说明:
pat:字符串,符号或正则表达式,表示字符串分割的依据,默认空格
n:整数,分割次数,默认值-1,0和-1返回所有拆分的字符串
expand:分割后的结果是否转换成DataFrame

2).示例

  • 示例1:分割收货地址中的"省"“市”
import pandas as pd

pd.set_option('display.unicode.ambiguous_as_wide', True)  # 处理数据的列标题与数据无法对齐的情况
pd.set_option('display.unicode.east_asian_width', True)  # 无法对齐主要是因为列标题是中文
df = pd.read_excel('F:\\Note\\图书采购清单.xlsx')

# 一列数据转换成多列数据
df1=df['收货地址'].str.split(' ',expand=True)
#df = df.join(df1)与df['省']=df1[0] 和 df['市']=df1[1]作用相同
df['省']=df1[0]
df['市']=df1[1]
print(df)

结果展示:
在这里插入图片描述

  • 示例2:对元组数据进行分割
import pandas as pd

pd.set_option('display.unicode.ambiguous_as_wide', True)  # 处理数据的列标题与数据无法对齐的情况
pd.set_option('display.unicode.east_asian_width', True)  # 无法对齐主要是因为列标题是中文
df = pd.read_excel('F:\\Note\\图书采购清单.xlsx')

# 对元组进行分割
df = pd.DataFrame({'a': [1, 2, 3, 4, 5], 'b': [(1, 2), (3, 4), (5, 6), (7, 8), (9, 10)]})
#df = df.join(df['b'].apply(pd.Series))与 df[['b1', 'b2']] = df['b'].apply(pd.Series)作用相同
df[['b1', 'b2']] = df['b'].apply(pd.Series)
print(df)
print('*' * 50)

结果展示:
在这里插入图片描述

2.行列转换(stack,unstack,pivot函数)

1).stack函数:

· 作用:将原来的列索引转换成最内层的行索引
· 语法:

DataFrame.stack(level=-1,dropna=True)

参数说明:
level:索引层次
dropna:是否删除缺失值

· 示例:

import pandas as pd

pd.set_option('display.unicode.ambiguous_as_wide', True)  # 处理数据的列标题与数据无法对齐的情况
pd.set_option('display.unicode.east_asian_width', True)  # 无法对齐主要是因为列标题是中文
df = pd.read_excel('F:\\Note\\图书采购清单.xlsx')
print(df)
print('*' * 50)

# stack函数进行行列转换
df = df.set_index(['序号','类名'])
df = df.stack()
print(df)

结果展示:
在这里插入图片描述

2).unstack

· 作用:将最内层的行索引转换成列索引,是stack函数的逆操作
· 语法:

DataFrame.unstack(level=-1,fill_value=None)

参数说明:
level:索引层次
fill_value:缺失值的填充值

· 示例:

import pandas as pd

pd.set_option('display.unicode.ambiguous_as_wide', True)  # 处理数据的列标题与数据无法对齐的情况
pd.set_option('display.unicode.east_asian_width', True)  # 无法对齐主要是因为列标题是中文
df = pd.read_excel('F:\\Note\\图书采购清单.xlsx')
print(df)
print('*' * 50)

# stack函数进行行列转换
df = df.set_index(['序号','类名'])
df = df.stack()
print(df)

结果展示:
在这里插入图片描述

3).pivot

· 作用:指定某列的值作为行索引,指定某列的值作为列索引,然后指定某列的值作为填充值
· 语法:

DataFrame.pivot(index =None,columns=None,values=None)

参数说明:
index :创建DataFrame数据的行索引
columns:创建DataFrame数据的列索引
values:创建DataFrame数据的填充值

· 示例:

import pandas as pd

pd.set_option('display.unicode.ambiguous_as_wide', True)  # 处理数据的列标题与数据无法对齐的情况
pd.set_option('display.unicode.east_asian_width', True)  # 无法对齐主要是因为列标题是中文
df = pd.read_excel('F:\\Note\\图书采购清单.xlsx')
print(df)
print('*' * 50)

#pivot函数进行行列转换
df1 = df.pivot(index='书名', columns='类名', values=['原价', '折扣价', '折扣率', '发货地址'])
print(df1)

结果展示:
在这里插入图片描述

3.DataFrame转换为字典(to_dict函数)

1).示例:

import pandas as pd

pd.set_option('display.unicode.ambiguous_as_wide', True)  # 处理数据的列标题与数据无法对齐的情况
pd.set_option('display.unicode.east_asian_width', True)  # 无法对齐主要是因为列标题是中文
df = pd.read_excel('F:\\Note\\图书采购清单.xlsx')
print(df)
print('*' * 50)

df1 = df.groupby('类名')['书名'].sum()
df1 = df1.to_dict()
for i, j in df1.items():
    print(i, ':\t', j)

结果展示:

在这里插入图片描述

4.DataFrame转换为列表(tolist函数)

1).示例:

import pandas as pd

pd.set_option('display.unicode.ambiguous_as_wide', True)  # 处理数据的列标题与数据无法对齐的情况
pd.set_option('display.unicode.east_asian_width', True)  # 无法对齐主要是因为列标题是中文
df = pd.read_excel('F:\\Note\\图书采购清单.xlsx')
print(df)
print('*' * 50)

df1 = df['书名'].tolist()
for i in df1:
    print(i)

结果展示:
在这里插入图片描述

5.DataFrame转换为元组(tuple函数)

1).示例:

import pandas as pd

pd.set_option('display.unicode.ambiguous_as_wide', True)  # 处理数据的列标题与数据无法对齐的情况
pd.set_option('display.unicode.east_asian_width', True)  # 无法对齐主要是因为列标题是中文
df = pd.read_excel('F:\\Note\\图书采购清单.xlsx')
print(df)
print('*' * 50)

df1 = df[['书名','原价']]
tuples=[tuple(i) for i in df1.values]
for i in tuples :
    print(i)

结果展示:

6.Excel转换成HTML网页格式(to_html函数)

1).示例:

import pandas as pd

pd.set_option('display.unicode.ambiguous_as_wide', True)  # 处理数据的列标题与数据无法对齐的情况
pd.set_option('display.unicode.east_asian_width', True)  # 无法对齐主要是因为列标题是中文

df = pd.read_excel('F:\\Note\\图书采购清单.xlsx')
print(df)
print('*' * 50)

df.to_html('F:\\Note\\图书采购清单.html',header=True,index=False,justify='center',encoding='gbk')

结果展示:
在这里插入图片描述

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

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

相关文章

【数字识别】基于DBN实现minist数据集手写数字识别附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab仿真内容点击👇 智能优化算法 …

四十六、Fluent壁面函数的选取依据

1. Fluent壁面函数 前面介绍了壁面函数的由来及相关的理论,这里我们介绍Fluent中壁面函数的选取依据。牢记:使用壁面函数的前提是y>15 Fluent在两种湍流模型中需要选择壁面函数分别是k-e模型和Reynolds Stress雷诺应力模型,其他的湍流模型…

ADRC自抗扰控制从Simulink仿真到PLC控制实现

ADRC自抗扰算法专栏有详细学习笔记和PLC完整源代码,大家可以自行查看,链接如下: ADRC自抗扰控制算法(含梯形图完整源代码和算法公式)_RXXW_Dor的博客-CSDN博客PLC的自抗扰控制(ADRC)算法_RXXW_Dor的博客-CSDN博客_adrc算法1、自抗扰控制算法,网上很多文章有所讲解,大家…

【KBQA-2】 Learning To Retrieve Prompts for In-Context Learning

前言 本文是对文章 Learning To Retrieve Prompts for In-Context Learning (NAACL, 2022) 的阅读笔记,论文代码:链接。 文章目录1. in-context learning2. 本文工作3. 模型训练和推理1)如何产生标记数据2)如何给候选集合打分3&am…

离散连续系统仿真(汽车自动停车系统和弹跳球运动模型) matlab

文章目录一、汽车自动停车系统1.1 实验描述1.2 实验目的1.3 建模1)建立这个自动停车系统的混成自动机模型:2)状态图1.4 Simulink仿真1.4.1 仿真图1.4.2 仿真结果1.5 实验体会二、弹跳球运动模型2.1 实验描述2.2 实验目的2.3 建模1)建立这个弹…

【计算机组成原理Note】5.1 CPU的功能和基本结构

5.1 CPU的功能和基本结构 5.1.1 CPU的功能 指令控制。完成取指令、分析指令和执行指令的操作,即程序的顺序控制。操作控制。一条指令的功能往往是由若干操作信号的组合来实现的。CPu管理并产生由内存取出的每条指令的操作信号,把各种操作信号送往相应的部…

前端JS基础第一篇:执行上下文与执行栈

目录 执行上下文与执行栈 引言 什么是执行上下文? 执行上下文生命周期 变量对象 执行上下文的类型 执行上下文的特点 执行栈 执行栈示例 执行上下文与执行栈 引言 对于我们前端开发者来说理解JS程序内部执行机制是必要的,其中一个关键概念就是Js的执行上…

使用QEMU调试ARM64 Linux内核v6.0.9

环境准备 开发环境:Ubuntu 20.04.5 LTS,推荐修改阿里云的apt源,遇到编译依赖方便安装。 环境准备:在Windows上基于WSL2搭建Linux开发环境 本文用到的软件选用的是截至当前(2022-11-19)官网发布的最新的release版本,详…

JavaEE之HTTPS

文章目录HTTPS加密引入证书总结HTTPS 加密 HTTPS 就是在 HTTP 的基础上进行了 加密 , 进一步的来保证用户的信息安全~ 举个例子: 83 版 <<火烧圆明园>> , 有人要谋反干掉慈禧太后. 恭亲王奕䜣给慈禧递的折子. 折子内容只是扯一扯家常,但套上一张挖了洞的纸就能看…

ESP32的BLE使用学习

UUID生成网站&#xff1a; Online UUID Generator Tool 0.前言 什么是低功耗蓝牙&#xff1f; BLE之所以被称为低功耗蓝牙&#xff0c;就是需要通讯的时候才握手&#xff0c;数据传输完成后&#xff0c;就断开连接。在通讯过程中&#xff0c;主动方是客户端&#xff0c;由客…

中微SC8F5771模拟IIC通信——指令运行速度的探索(附编译软件与烧录软件)

文章目录一、中微单片机烧录与使用编译软件烧录软件下载地址烧录软件二、模拟IIC三、逻辑分析仪下的时序一、中微单片机烧录与使用 编译软件 中微所使用编译软件为SCMCU_IDE&#xff0c;不过个人不推荐使用这个软件写代码&#xff08;十分不好用&#xff0c;不能跳转&#xf…

Linux搜索查找命令【详细整理】

目录Linux下文件搜索、查找、查看命令findfind 【搜索范围】【选项】​ find /home -name ‘hello.txt’​ find /home -user root​ find / -size 100Mlocate特别说明&#xff1a;locate 文件名whichwhich lsgrep​ 基本语法&#xff1a;grep [选项] 查找内容 源文件grep -niL…

第六章 图论 8 AcWing 1624. 地铁地图

第六章 图论 8 AcWing 1624. 地铁地图 原题链接 AcWing 1624. 地铁地图 算法标签 图论 单源最短路 dijkstra spfa 思路 若采用邻接矩阵存储 超出本题空间限制&#xff0c;因此无法采用邻接矩阵存储&#xff0c;可采用邻接表存储 若采用常规建图方式&#xff08;即相邻两…

微信小程序|基于小程序实现人脸融合

文章目录一、文章前言二、具体流程及准备三、开发步骤四、完整代码一、文章前言 此文主要通过小程序实现人脸图像融合&#xff0c;将检测到的两张人脸进行融合&#xff0c;输出一张融合后的人脸。 二、具体流程及准备 2.1、注册百度开放平台及微信公众平台账号。 2.2、下载及安…

概论_第2章随机变量及其概率分布__离散型随机变量之二项分布

二项分布是离散型随机变量的内容 一. 定义&#xff1a; 若随机变量X的可能取值为0, 1, ... ,n, 而X的分布值为 , k0,1,…n 其中&#xff0c;0<p<1, q 1-p, 称X服从参数为n, p的二项分布&#xff0c; 简记为 X ~ B(n, p) 1. 当n1时&#xff0c; X服从0-1分布, …

想进入游戏建模行业,这4点必须了解

“游戏行业不关心你的专业&#xff0c;只关心你的作品”&#xff0c;想要进入游戏行业就记住这句话&#x1f44d; 这一年可是越来越多人想要进入游戏行业啦&#xff5e;造成了汤多肉少的情况&#xff0c;咱们怎样才能在一群竞争者中脱颖而出呢❓有4⃣大点你要注意的&#xff1…

决策树算法在计算机视觉中的应用附matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

利用SpringBoot和vue+elementui做一个简单的书本信息管理系统

目录 1.准备工作 1.1.数据库准备 1.2.前端准备工作 1.3.后端准备工作 2.后台代码的编写 2.1.修改配置文件 2.2. 编写service层 2.3.编写Controller层 3.前台代码的编写 3.1.在src里面的api里面的action.js 3.2.搜索栏&#xff0c;表单 3.3.表格 3.4.弹出新增的模态…

[附源码]SSM计算机毕业设计整形美容咨询网站JAVA

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

【考研复试】计算机专业考研复试英语常见问题二(研究方向/前沿技术/本科毕设篇)

相关链接&#xff1a; 【考研复试】计算机专业考研复试英语常见问题一&#xff08;家庭/家乡/学校篇&#xff09;【考研复试】计算机专业考研复试英语常见问题二&#xff08;研究方向/前沿技术/本科毕设篇&#xff09;【考研复试】计算机专业考研复试英语常见问题三&#xff0…