Python数据攻略-DataFrame的数据操作

news2024/12/22 9:18:42

大家好,我是Mr数据杨,今天我们就来谈谈Python中的数据访问和修改。

首先,你们一定都听过《三国演义》吧,里面的人物和事情其实就像我们Python中的数据。比如曹操就像我们的数据元素,他的性格特点、军事才能等就像我们用访问器获取的数据,我们可以通过这些数据更好地了解他。然后,如果我们想要更改曹操的某些信息,比如他手下的将领数量或所占领的城市,那就像是我们使用访问器设置数据。

接下来是插入和删除数据。想象一下,你是曹操,你想要招揽一些新的谋士或将领,那么你就需要在你的名单中添加他们,这就像是我们插入数据。而如果有人背叛了你,你可能就需要从你的名单中删除他,这就像我们删除数据。

同样的如果你想扩大你的领土,你可能需要插入新的城市,也就是我们插入新的列。反之,如果你失去了一些城市,那么你可能需要删除一些列。

希望以上的解释能够帮助你们更好地理解Python中的数据操作,让我们一起深入这个数据操作的三国世界,去更好地了解Python吧!

文章目录

  • 访问和修改数据
    • 使用访问器获取数据
    • 使用访问器设置数据
  • 插入和删除数据
    • 插入和删除行
    • 插入和删除列

访问和修改数据

使用访问器获取数据

除了使用 .loc[] 访问器通过索引获取行或列的数据之外,Pandas还提供了 .iloc[] 访问器,它通过整数索引来检索行或列。

示例代码:

df.loc[10]

输出结果:

名前                                                      阿会喃
字                                                         -
读み                                                        -
性别                                                        男
生年                                                      190
登场                                                      217
没年                                                      225
...
酒\n興味                                                    あり
物欲                                                       强欲
Name: 10, dtype: object
df.iloc[0]

输出结果:

名前                                                      阿会喃
字                                                         -
读み                                                        -
性别                                                        男
生年                                                      190
登场                                                      217
没年                                                      225
...
酒\n興味                                                    あり
物欲                                                       强欲
Name: 10, dtype: object

.loc[].iloc[] 支持切片和类似NumPy的索引操作。

示例代码:

df.loc[:, '名前']

输出结果:

10    阿会喃
11     韋昭
12     伊籍
13     尹賞
14    尹大目
Name: 名前, dtype: object
df.iloc[:, 1]

输出结果:

10    阿会喃
11     韋昭
12     伊籍
13     尹賞
14    尹大目
Name: 名前, dtype: object

可以使用切片、列表或数组来获取多行或多列的数据。

示例代码:

df.loc[11:15, ['名前', '字']]

输出结果:

     名前	字
11	韋昭	弘嗣
12	伊籍	機伯
13	尹賞	-
14	尹大目	-
df.iloc[1:6, [0, 1]]

输出结果:

     名前	字
11	韋昭	弘嗣
12	伊籍	機伯
13	尹賞	-
14	尹大目	-

.iloc[] 可以使用与切片元组、列表和NumPy数组相同的方式跳过行和列。

示例代码:

df.iloc[1:6:2, 0]

输出结果:

11    韋昭
13    尹賞
Name: 名前, dtype: object

还可以使用Python内置的 slice() 类、numpy.s_[] 或者 pd.IndexSlice[]

示例代码:

df

.iloc[slice(1, 6, 2), 0]

输出结果:

11    韋昭
13    尹賞
Name: 名前, dtype: object
df.iloc[np.s_[1:6:2], 0]

输出结果:

11    韋昭
13    尹賞
Name: 名前, dtype: object
df.iloc[pd.IndexSlice[1:6:2], 0]

输出结果:

11    韋昭
13    尹賞
Name: 名前, dtype: object

使用 .loc[].iloc[] 获取特定的数据值。但是当只需要单个值时,建议使用专门的访问器 .at[].iat[]

示例代码:

df.at[12, '名前']

输出结果:

'伊籍'
df.iat[2, 0]

输出结果:

'伊籍'

使用访问器设置数据

可以使用访问器来修改数据,可以传递Python序列、NumPy数组或单个值来修改数据。

示例代码:

df.loc[:13, '生年'] = [40, 50, 60, 70]
df.loc[14:, '生年'] = 0

df['生年']

输出结果:

10    40
11    50
12    60
13    70
14     0
Name: 生年, dtype: int64

可以使用负索引 .iloc[] 来访问或修改数据。

示例代码:

df.iloc[:, -10] = np.array([88.0, 79.0, 81.0, 80.0, 68.0, 61.0, 84.0])
df['生年']

输出结果:

10    88.0
11    79.0
12    81.0
13    80.0
14    68.0
Name: 生年, dtype: float64

插入和删除数据

Pandas提供了几种方便的方法来插入和删除行或列。

插入和删除行

首先,创建要插入的新数据。

示例代码:

new = pd.Series(data=['Mr数据杨', 'xxx', "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-"], index=df.columns)

new

输出结果:

名前        Mr数据杨
字           xxx
读み            -
性别            -
生年            -
登场            -
没年            -
...
酒\n興味        -
物欲           -
dtype: object

使用 df.append() 将新数据加入DataFrame。

示例代码:

df = df.append(pd.DataFrame(new).T)
df

输出结果:

![在这里插入图片描述](https://img-blog.csdnimg.cn/994b325298f24b26938e9c

02847411bd.png)

使用 df.drop() 删除新数据。

示例代码:

df = df.drop(labels=[17])
df

输出结果:

在这里插入图片描述

插入和删除列

可以直接赋值来定义新列的名称和数据。

示例代码:

df['temp_data'] = np.array([71.0, 95.0, 88.0, 79.0, 91.0])
df

输出结果:

在这里插入图片描述

可以将新列的所有值设置为0。

示例代码:

df['temp_data'] = 0.0
df

输出结果:

在这里插入图片描述

使用 .insert() 在指定位置插入列数据。

示例代码:

df.insert(loc=4, column='new_temp_data', value=np.array([86.0, 81.0, 78.0, 88.0, 74.0, 70.0, 81.0]))
df

输出结果:

在这里插入图片描述

使用 del 关键字删除一列或多列。

示例代码:

del df['new_temp_data']
df

输出结果:

在这里插入图片描述

使用 df.drop() 删除列。

示例代码:

df = df.drop(labels='age', axis=1)
df

输出结果:

在这里插入图片描述

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

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

相关文章

5年开发经验,看完这份37W字Java高性能架构,终于拿到架构师薪资

其实现在很多的开发人员并不能解决从架构的角度全方位地了解在Java编程过程中各阶段会出现的典型问题,更没办法深入到底层原理了解问题出现的原因! 且随着当下面试越来越深入到底层,如果大家对于底层的原理不了解的话,是很难做出…

JDK11+mybatis-plus+shardingsphere分库分表

1、引入jar dynamic-datasource-spring-boot-starter&#xff1a;2.5.6 sharding-jdbc-spring-boot-starter&#xff1a;4.1.1 <dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId>&…

微调样本质量胜于数量 LIMA: Less Is More for Alignment

1、总体介绍 大型语言模型的训练分为两个阶段&#xff1a;&#xff08;1&#xff09;从原始文本中进行无监督的预训练&#xff0c;以学习通用的表征&#xff1b;&#xff08;2&#xff09;大规模的指令学习和强化学习&#xff0c;以更好地适应最终任务和用户的偏好。 作者通过…

作为网络安全工程师,都有哪些公司可以选?

招聘平台 首选内推 其次是公司自有招聘平台 再是第三方平台&#xff1a;boos直聘、前程无忧、拉钩、猎聘、牛客、牛聘 乙方 启明星辰 商标&#xff1a;云众可信&#xff0c;云子可信 投资&#xff1a;网御星云&#xff0c;恒安嘉新 拳头产品&#xff1a;Secin 社区、天清…

企企通×天能股份SRM一期项目成功上线,持续深化企业采购数字化

近期&#xff0c;企企通凭借在赋能客户数字化转型方面的优秀实践与丰富的解决方案&#xff0c;荣获天能电池集团股份有限公司&#xff08;以下简称“天能股份”&#xff09;颁发的“2022年度数字化优秀供应商奖”&#xff0c;同时&#xff0c;企企通SRM项目还获得天能股份采购管…

vue-cli4打包优化

项目开始时webpack配置 vue-cli3以后&#xff0c;我们修改webpack配置&#xff0c;需要自己在项目根路径下创建vue.config.js文件。 一、 配置 proxy 跨域 使用vue-cli发开项目&#xff0c;在本地开发环境中&#xff0c;如果遇到跨域的问题。可以通过配置proxy的方式&#xff…

uniapp(二) 之 uniapp 搭建与组件库的引用

小扩展&#xff1a; rpx&#xff08;responsive pixel&#xff09;:可以根据屏幕宽度自适应。规定屏幕宽度为750rpx。如果iphon6上&#xff0c;屏幕宽度为375px,共有750个像素&#xff0c;则750rpx 375培训 750物理像素&#xff0c;1rpx 0.5px 1物理像素。 页面跳转&#xff…

你知道TikTok的推荐算法吗?TikTok数据分析平台哪家好?

作为当下最受欢迎的社交媒体&#xff0c;TikTok这几年的成绩大家也是有目共睹了&#xff0c;超10亿的月活加上大量活跃的年轻人&#xff0c;让无数企业和品牌为之心动。入局的人越来越多&#xff0c;想要在众多竞争者中脱颖而出&#xff0c;入局前需要了解TikTok底层逻辑和推荐…

Treadlocal源码实例详解

我们都知道treadlocal维护变量时候&#xff0c;可以为每个线程维护一个独立的副本&#xff0c;改变的是自己线程的数据。 ThreadLocal公用方法有四个&#xff1a;get&#xff0c;set&#xff0c;remove&#xff0c;intiValue 既然threadLocalMap是局部变量&#xff0c;所以他存…

内网安全:内网渗透.(拿到内网主机最高权限 vulntarget 靶场 1)

内网安全&#xff1a;内网渗透.&#xff08;拿到内网主机最高权限&#xff09; 内网穿透又被称为NAT穿透&#xff0c;内网端口映射外网&#xff0c;在处于使用了NAT设备的私有TCP/IP网络中的主机之间建立连接的问题。通过映射端口&#xff0c;让外网的电脑找到处于内网的电脑。…

中国人民大学与加拿大女王大学金融硕士——人生选对方向很重要

有人说&#xff0c;人生最重要的不是财富、不是荣誉&#xff0c;而是选择一条正确的道路。选择正确的方向&#xff0c;对一个人的成长和事业的成功与否&#xff0c;起着决定作用。有了方向&#xff0c;你前进的每一步都跟接近幸福。在职计划读研的你有了解过中国人民大学与加拿…

Linux - 第23节 - Linux高级IO(一)

1.IO的基本概念 IO的概念&#xff1a; I/O&#xff08;input/output&#xff09;也就是输入和输出&#xff0c;在著名的冯诺依曼体系结构当中&#xff0c;将数据从输入设备拷贝到内存就叫做输入&#xff0c;将数据从内存拷贝到输出设备就叫做输出。 • 对文件进行的读写操作本质…

SpringBoot注解详解,建议收藏!

一、简介 基于 SpringBoot 平台开发的项目数不胜数&#xff0c;与常规的基于Spring开发的项目最大的不同之处&#xff0c;SpringBoot 里面提供了大量的注解用于快速开发&#xff0c;而且非常简单&#xff0c;基本可以做到开箱即用! 那 SpringBoot 为开发者提供了多少注解呢?…

《大数据技术与应用》课程实验报告|week12|实验8|Pig——高级编程环境|验证评估函数

目录 一、实验内容 二、实验目的 三、实验设备 四、实验步骤 步骤一 步骤二 步骤三 步骤四 步骤五 步骤六 步骤七 步骤八 步骤九 步骤十 步骤十一 步骤十二 步骤十三 步骤十四 步骤十五 步骤十六 五、实验结果 六、实验小结 一、实验内容 验证19.5节中的…

亚马逊云科技携手木卫四,为汽车行业智能安全赋能

木卫四&#xff08;北京&#xff09;科技有限公司在汽车网络安全领域拥有独特专业知识&#xff0c;其融合人工智能算法的安全检测引擎可以不依赖车辆中安装的代理软件&#xff0c;只需几周即可快速部署实施&#xff0c;是汽车网络安全领域的技术领先者。 在亚马逊云科技初创团…

chatgpt赋能python:Python同一行多个语句:如何提高你的编程效率?

Python同一行多个语句&#xff1a;如何提高你的编程效率&#xff1f; Python是一种优雅的编程语言&#xff0c;拥有简洁易懂的语法&#xff0c;可以帮助你快速编写可以在各种领域使用的高级代码。其中&#xff0c;Python同一行多个语句&#xff0c;是一种可以大大提高编程效率…

Springboot +spring security,基于内存模型实现授权

一.简介 1.1概念 所谓授权&#xff0c;举个例子&#xff1a;某个用户想要访问某个资源(接口、页面、功能等)&#xff0c;我们应该先去检查该用户是否具备对应的权限&#xff0c;如果具备就允许访问&#xff0c;如果不具备&#xff0c;则不允许访问。也就是说&#xff0c;授权…

第二十二章行为型模式—备忘录模式

文章目录 备忘录模式解决的问题结构实例“白箱” 备忘录模式“黑箱” 备忘录模式 存在的问题适用场景 行为型模式用于描述程序在运行时复杂的流程控制&#xff0c;即描述多个类或对象之间怎样相互协作共同完成单个对象无法单独完成的任务&#xff0c;它涉及算法与对象间职责的分…

【QQ聊天界面、创建模型、懒加载数据 Objective-C语言】

一、今天我们要做的就是这个案例 1.我们今天要做的案例,做好了之后的效果就是这样 这个案例,和昨天那个微博的案例是非常相像的, 哪些相像呢, 1)整体是不是也是能滚动啊, 2)能滚动,它不仅仅是一个UIScrollView 它里面,这个也是一行、两行、三行、四行、 所以说,…

Java核心知识点常考面试题(持续更新中)

Java核心知识点常考面试题&#xff08;持续更新中&#xff09; 线程与线程池Java锁机制轻量级锁重量级锁 线程与线程池 一、线程 1、线程的状态 2、线程的创建方式 &#xff08;1&#xff09;继承 Thread 类&#xff1b; &#xff08;2&#xff09;实现 Runnable 接口&#…