Pandas - 数据转换

news2024/10/6 20:40:30

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

1.一列数据转换为多列数据

        如原始地址数据为:“广东省 深圳市 罗湖区 xxxx”, 此时如果我们需要按照省来分类,就需要将“省”、“市”、“区”、“详细地址”分别拆分出来。

        1.split()方法

import pandas as pd

#导入Excel文件指定列数据(“买家会员名”和“收货地址”)
df = pd.read_excel('mrbooks.xls',usecols=['买家会员名','收货地址'])
#使用split方法分割“收货地址”
series=df['收货地址'].str.split(' ',expand=True)
df['省']=series[0]
df['市']=series[1]
df['区']=series[2]
df1=df.head()

        2.join()方法与split()方法结合

import pandas as pd

#导入Excel文件部分列数据(“买家会员名”和“宝贝标题”)
df = pd.read_excel('mrbooks.xls',usecols=['买家会员名','宝贝标题'])
#使用join方法和split方法分割“宝贝标题”
df = df.join(df['宝贝标题'].str.split(',', expand=True))
df1=df.head()

        上述两种方法效果一致。

        3.将DataFrame中的tuple(元祖)类型数据分割成多列

import pandas as pd

df = pd.DataFrame({'a':[1,2,3,4,5], 'b':[(1,2), (3,4),(5,6),(7,8),(9,10)]})
print(df)

# apply函数分割元组
df[['b1', 'b2']] = df['b'].apply(pd.Series)
print(df)

#或者join方法结合apply函数分割元组
#df= df.join(df['b'].apply(pd.Series))
#print(df)

 2.行列转换

        在处理数据过程中,有时候需要对数据进行行列转换或重排,介绍以下三种方法的应用.

        1.stack()方法

import pandas as pd

df=pd.read_excel('grade.xls')      #导入Excel文件
df = df.set_index(['班级','序号']) #设置2级索引“班级”和“序号”
df = df.stack()
print(df)

        2.unstack()方法

import pandas as pd
#设置数据显示的列数和宽度
pd.set_option('display.max_columns',500)
pd.set_option('display.width',1000)
#解决数据输出时列名不对齐的问题
pd.set_option('display.unicode.east_asian_width', True)
df=pd.read_excel('grade.xls',sheet_name='英语2')      #导入Excel文件
df = df.set_index(['班级','序号','Unnamed: 2'])       #设置多级索引
print(df.unstack())

        3.pivot()方法

import pandas as pd

df=pd.read_excel('grade.xls',sheet_name='英语3')      #导入Excel文件
df1=df.pivot(index='序号',columns='班级',values='得分')

原数据: 

运行结果:

3.DataFrame转换为字典 

        使用DataFrame的to_dict()方法。

import pandas as pd
df = pd.read_excel('mrbooks.xls')
df1=df.groupby(["宝贝标题"])["宝贝总数量"].sum().head()
mydict=df1.to_dict()
for i,j in mydict.items():
    print(i,':\t', j)

4.DataFrame转换为列表

        使用DataFrame的values.tolist()方法。

import pandas as pd
df =pd.read_excel('mrbooks.xls')
df1=df[['买家会员名']].head()
list1=df1['买家会员名'].values.tolist()
for s in list1:
    print(s)

5.DataFrame转换为元组

        首先通过循环语句读取DataFrame数据,然后使用元组函数tuple()将其转换为元组。

import pandas as pd
df = pd.read_excel('fl4.xls')
df1=df[['label1','label2']].head()
tuples = [tuple(x) for x in df1.values]
for t in tuples:
    print(t)

6.Excel转换为HTML网页格式

        Excel显示对于用户来说不友好,我们可以使用to_html()方法生成一个html页面来展示。此代码会在该目录生成一个html文件展示数据。 

import pandas as pd
df=pd.read_excel('mrbooks.xls',usecols=['买家会员名','宝贝标题']).head()
df.to_html('mrbooks1.html',header = True,index = False)
print(df)

《python数据分析》p113

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

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

相关文章

解密网易数帆DataOps“三剑客”:从数据开发治理、指标中台到ChatBI

大数据产业创新服务媒体 ——聚焦数据 改变商业 近日,以“数智聚力,共赴新程”为主题的2023网易数字大会在杭州召开。在这次大会上,数据猿采访了网易副总裁、网易数帆总经理汪源,网易数帆大数据产品线总经理余利华,对…

centos7部署Canal与Canal集成使用

1、简介 canal [kə’nl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费 早期阿里巴巴因为杭州和美国双机房部署,存在跨机房同步的业务需求,实现方式主要是基于业务 trigge…

项目实战:中央控制器实现(2)-优化Controller,将共性动作抽取到中央控制器

1、FruitController FruitController已经和Web没有关系了,和Web容器解耦,可以脱离Web容器做单元测试 package com.csdn.fruit.controller; import com.csdn.fruit.dto.PageInfo; import com.csdn.fruit.dto.PageQueryParam; import com.csdn.fruit.dto.R…

Linux C基础(7)

1、二维数组 1.1 概念 本质:元素为一堆数组的数组(数组的数组)数组的特点:(1)数据类型相同 (2)地址连续 1.2 定义 数组:存储类型 数据类型 数组名[元素个数]二维数组&…

TinyEngine 开源低代码引擎首次直播答疑QA合集

前言 10月27日晚8点,OpenTiny 社区开启了 TinyEngine 开源低代码引擎首次答疑直播,本次直播我们通过收集开发者诉求,精心策划和组织了内容,希望提供给大家最明确和清晰的答疑方式。这是 TinyEngine 低代码引擎直播计划的开端&…

什么是数字化管理?产业园区如何进行数字化管理?

工业园区的数字化管理涉及利用技术和数据驱动的工具来优化工业园区环境中的运营、提高效率并改进决策流程。它通常包括使用各种数字技术和数据分析技术来监视、控制和增强公园运营的各个方面。 以下是工业园区数字化管理的一些关键方面以及如何实施: 1.数据收集和…

vue3怎么获取el-form的元素节点

在元素中使用ref设置名称 在ts中通过从element-plus引入formInstance,设置formRef同名名称字段来获取el-form节点

酷开科技持续推动智能投影行业创新发展

近年来,投影仪逐渐成为年轻人追捧的家居时尚单品。据国际数据公司(IDC)报告显示,2022年中国投影机市场总出货量505万台,超80%为家用投影仪。相比于电视,投影仪外观小巧、屏幕大小可调节,无论是卧…

C#中基于.NET6的动态编译技术

前几天要解决动态计算问题,尝试着使用了不同的方法。问题是给定一个包含计算的字符串,在程序运行中得到计算结果,当时考虑了动态编译,在网上查了一些资料完成了这项功能,可是基于不同的.NET平台使用的编程代码相差比较…

sparksql明明插入了但是表里数据是null

现象 将数据插入表的时候,表里的数据是null 代码 原因 建表语句的时候detail字段的类型写成了bigint,而要插入的数据类型是string,所以把建表语句的字段类型改了然后sql文件重跑就解决了

动态轮换住宅代理是什么?为何需要使用它?

随着越来越多的企业完善网络活动,IP代理的重要性变得显而易见。代理可确保顺利、安全且不受限制地访问互联网的大量资源。在不同类型的代理中,轮换代理脱颖而出,那么他哪里有别于其他IP代理呢? 一、什么是动态轮换代理&#xff1f…

Navicat的使用--mysql

表关系 数据库的操作,表字段的设计,一般都由于图形化界面工具Navicat完成。 而表中数据的增删改查,需要熟悉sql语句。 一对一 一对一:一个A对应一个B,一个B对应一个A 将A或B任意一张表的主键设置为外键 一对多 一…

高性能网络编程 - The C10M problem

文章目录 Pre概述回顾C10K实现C10M的挑战思路总结 Pre 高性能网络编程 - The C10K problem 以及 网络编程技术角度的解决思路 概述 在接下来的10年里,因为IPv6协议下每个服务器的潜在连接数都是数以百万级的,单机服务器处理数百万的并发连接&#xff0…

SpringDataJpa(一)

一、JPA概述 1.1 ORM概述 ORM(Object-Relational Mapping) 表示对象关系映射。在面向对象的软件开发中,通过ORM,就可以把对象映射到关系型数据库中。只要有一套程序能够做到建立对象与数据库的关联,操作对象就可以直…

【自然语言处理】利用python创建简单的聊天系统

一,实现原理 代码设计了一个简单的客户端-服务器聊天应用程序,建立了两个脚本文件(.py文件),其中有一个客户端和一个服务器端。客户端和服务器之间通过网络连接进行通信,客户端发送消息,服务器端接收消息并…

工业相机基本知识理解:帧率、带宽(数据接口)、图像数据格式

1、帧率:Frame Per Second,单位fps,每秒采集的图像数量 2、带宽:一般单位用Gbps,每秒能传输的Gbit数据量 Gige:千兆网,带宽1Gbps USB3.0:带宽5Gbps,一般U3V工业相机用到3…

Redis笔记 Redis主从同步

文章目录 Redis主从搭建主从架构主从数据同步原理全量同步增量同步repl_backlog原理 主从同步优化小结 Redis主从 搭建主从架构 单节点Redis的并发能力是有上限的,要进一步提高Redis的并发能力,就需要搭建主从集群,实现读写分离。 主从数据…

10 # 手写 every 方法

every 使用 every() 方法测试一个数组内的所有元素是否都能通过指定函数的测试。它返回一个布尔值。 ele&#xff1a;表示数组中的每一个元素index&#xff1a;表示数据中元素的索引array&#xff1a;表示数组 <script>var arr [1, 3, 5, 7, 8];var result arr.ever…

网络通信——与Socket交换数据(三十一)

1. 与Socket交换数据 1.1 知识点 &#xff08;1&#xff09;通过Android与Socket完成基本的Echo程序实现&#xff1b; &#xff08;2&#xff09;通过对象序列化进行大数据的传输&#xff1b; 1.2 具体内容 对于网络的开发而言&#xff0c;最常使用的交互模式&#xff1a;W…

ZZ308 物联网应用与服务赛题第F套

2023年全国职业院校技能大赛 中职组 物联网应用与服务 任 务 书 &#xff08;F卷&#xff09; 赛位号&#xff1a;______________ 竞赛须知 一、注意事项 1.检查硬件设备、电脑设备是否正常。检查竞赛所需的各项设备、软件和竞赛材料等&#xff1b; 2.竞赛任务中所使用…