Pandas数据中的浅拷贝与深拷贝

pandas库主要有两种数据结构DataFrames和Series。这些数据结构在内部用索引数组和数据数组表示,索引数组标记数据,数据数组包含实际数据。现在,当我们试图复制这些数据结构(DataFrames和Series)时,我们实际上是复制对象的索引和数据,有两种方法可以做到这一点,即浅复制和深复制。
这些操作是在库函数pandas.DataFrame.copy(deep=False)(用于浅拷贝)和pandas.DataFrame.copy(deep=True)(用于DataFrames和Series中的深拷贝)的帮助下完成的。

现在,让我们了解一下什么是浅拷贝。

浅拷贝

当创建DataFrame或Series对象的浅层副本时,它不会复制原始对象的索引和数据,而只是复制对其索引和数据的引用。因此,对一个对象所做的更改将反映在另一个对象中。

它指的是构造一个新的集合对象,然后用对原始集合中的子对象的引用填充它。复制过程不会递归,因此不会创建子对象本身的副本。

比如:
在这里插入图片描述

import pandas as pd# assign dataframe
df = pd.DataFrame({'index': [1, 2, 3, 4],'GFG': ['Mandy', 'Ron', 'Jacob', 'Bayek']})# shallow copy
copydf = df.copy(deep=False)# comparing shallow copied dataframe
# and original dataframe
print('\nBefore Operation:\n', copydf == df)# assignment operation
copydf['index'] = [0, 0, 0, 0]# comparing shallow copied dataframe
# and original dataframe
print('\nAfter Operation:\n', copydf == df)print('\nOriginal Dataframe after operation:\n', df)

输出

在这里插入图片描述

从上面程序的输出可以看出,应用于浅层复制数据帧的更改会自动应用于原始数据帧。

深拷贝

DataFrame或Series对象的深层副本具有自己的索引和数据副本。这是一个复制过程递归发生的过程。这意味着首先构造一个新的集合对象,然后用在原始集合中找到的子对象的副本递归地填充它。在深度复制的情况下,对象的副本被复制到另一个对象中。这意味着对对象副本所做的任何更改都不会反映在原始对象中。

例如
在这里插入图片描述

import pandas as pd# assign dataframe
df = pd.DataFrame({'index': [1, 2, 3, 4],'GFG': ['Mandy', 'Ron', 'Jacob', 'Bayek']})# deep copy
copydf = df.copy(deep=True)# comparing shallow copied dataframe
# and original dataframe
print('\nBefore Operation:\n', copydf == df)# assignment operation
copydf['index'] = [0, 0, 0, 0]# comparing shallow copied dataframe
# and original dataframe
print('\nAfter Operation:\n', copydf == df)print('\nOriginal Dataframe after operation:\n', df)

输出
在这里插入图片描述
在这里,原始对象中的数据不会被递归复制。也就是说,原始对象的数据中的数据仍然指向相同的存储单元。例如,如果Dataframe或Series对象中的数据包含任何可变数据,那么它将在它和它的深层副本之间共享,并且对其中一个的任何修改都将反映在另一个中。

浅拷贝与深拷贝的区别

浅拷贝深拷贝
它是集合结构的副本,而不是元素的副本。它是集合的副本,其中复制了原始集合中的所有元素。
影响初始数据帧。不影响初始数据帧。
浅拷贝不会复制子对象。深拷贝递归地复制子对象。
创建浅拷贝比创建深拷贝快。与浅拷贝相比,创建深拷贝速度较慢。
副本依赖于原件。副本并不完全依赖于原件。

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

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

相关文章

【Github】git本地仓库建立与远程连接

文章目录 前言一、git简介二、git下载2.1下载地址 三、git安装3.1安装3.2 配置3.3 config设置(增删改查) 四.github与git连接——本地Git仓库4.1 建本地的版本库4.2 源代码放入本地仓库4.3提交仓库 五、github与git的连接——远程连接5.1 创建SSH Key5.2…

调用API接口的一些注意技巧

在实践中我们经常发现,很多同学都是直接请求调用和读取接口数据,而没有做状态码的判断,这在设计角度是非常不合理的。 另外,对于一些实时性要求不高的接口,更合理的做法应该是先把数据拉到本地缓存,再从缓存…

openpnp - 底部相机高级矫正后,底部相机看不清吸嘴的解决方法

文章目录 openpnp - 底部相机高级矫正后,底部相机看不清吸嘴的解决方法概述解决思路备注补充 - 新问题 - N1吸嘴到底部相机十字中心的位置差了很多END openpnp - 底部相机高级矫正后,底部相机看不清吸嘴的解决方法 概述 自从用openpnp后, 无论版本(dev/test), 都发现一个大概…

数字图像处理:亮度对比度-几何变换-噪声处理

文章目录 数字图像增强亮度与对比度转换几何变换图像裁剪尺寸变换图像旋转 噪声处理添加噪声处理噪声 数字图像增强 亮度与对比度转换 图像变换可分为以下两种: 点算子:基于像素变换,在这一类图像变换中,仅仅根据输入像素值计算…

47、TCP的流量控制

从这一节开始,我们学习通信双方应用进程建立TCP连接之后,数据传输过程中,TCP有哪些机制保证传输可靠性的。本节先学习第一种机制:流量控制。 窗口与流量控制 首先,我们要知道的是:什么是流量控制&#xff…

MR源码解析和join案例

MR源码解析 new Job(): 读取本地文件, xml配置job.start(): 启动线程job的run():线程方法 runTasks(): 传入对应的接口,启动map或者reduceMapTask类的run(): 设置map阶段的参数,初始化任务,创建上下文对象 创建读取器LineRecordReader判断是…

Windows下搭建MavLink通信协议环境,并用C++程序测试

搭建环境 git克隆 git clone https://github.com/mavlink/mavlink.git --recursive安装python的future库 pip install future使用可视化工具生成mavlink库 XML是选择消息格式,也可以自定义Out是输出路径Language是生成的语言,我这里是CProtocol是协议…

“五度晟企通”企业发展服务平台正式发布,帮扶企业行稳致远!

在数字中国建设的大背景下,“五度易链”以企业实际发展需求为牵引,以帮扶企业行稳致远为目标,基于全体量产业大数据,运用NLP、AI等新一代信息技术,打造了数字化ToB企业发展服务平台“五度晟企通”,旨在以数…

企微SCRM营销平台MarketGo-ChatGPT助力私域运营

一、前言 ChatGPT是由OpenAI(开放人工智能)研发的自然语言处理模型,其全称为"Conversational Generative Pre-trained Transformer",即对话式预训练转换器。它是GPT系列模型的最新版本,GPT全称为"Gene…

16-数据结构-图的存储结构

简介:主要为图的顺序存储和链式存储。其中顺序存储即邻接矩阵的画法以及代码,邻接矩阵又分为有权图和无权图,区别就是有数据的地方填权值,无数据的地方可以填0或者∞,而有权图和无权图,又细分为有向图和无向…

【腾讯云Cloud Studio实战训练营】戏说cloud studio

文章目录 前言产品概述项目体验登录空间模板模板项目体验 总结 前言 在奇幻世界中,存在着一片神秘的云海,被人们称为腾讯云云端开发环境 Cloud Studio。这片云海是一座巨大的浮岛,上面漂浮着一个集成式开发环境(Integrated Devel…

CUDA和cudnn详细安装过程【通用win】

1 软硬件资源 仅作参考,其他型号通用 win 11 32内存显卡 RTX 2080Ti ,驱动版本号:516.59python 3.8.10torch 1.8.0 框架cudatoolkit 11.1cudnn 8.0.4 2 查看适用cuda版本 2.1 查看本机的cuda算力 安装之前先进入官网查看自己的显卡能不能用…