百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

Pandas数据帧筛选方法汇总,值得收藏

liuian 2024-12-20 17:18 42 浏览

子集选择是数据操作中最常执行的步骤之一。Pandas提供了许多不同的方法来筛选数据帧,来获得选定的数据子集。在本文中,我们就要来处理数据时遇到的问题以及解决办法。

开始之前,我们先来创建一个示例数据帧。

#创建一个简单的数据帧
df = pd.DataFrame({
    'name' :     [ 'Chi', 'Alex', 'Sam', 'Hoang', 'Linh', 'Dung', 'Anh'],
    'function' : [ 'Marketing', 'Tech', 'Tech', 'Finance', 'Finance', 'Marketing', 'HR'],
    'address' :  [ 'Hanoi', 'Saigon', 'Hanoi', 'Saigon', 'Hanoi', 'Hanoi', 'Saigon'],
    'gender' :   ['F', 'M', 'F', 'M', 'M', 'M', 'F'],
    'favourite_fruit' : [ 'apple', 'banana', 'orange', 'watermelon', 'grape', np.NAN, 'kumquat'],
    'age' : [20,25,21,26,30,31,23]
})

以下是我们创建的 df 数据帧:

基于多个条件选择行

基于某些特定条件选择行范围的方法很少。

#使用数据帧方法
df[(df.age >=25) & (df.address == 'Hanoi')] 

#使用query函数
df.query('age >= 25 & address == "Hanoi"') 

#使用loc函数
df.loc[(df.age >= 25) & (df.address == 'Hanoi')] 

所有这些方法产生的结果如下:

使用loc、iloc选择一系列行

在本节中,介绍几种使用 loc 和 iloc 筛选数据帧的方法。

1.使用loc选择一系列行

df.loc[0:3] 

输出:

2.使用iloc选择一系列行

df.iloc[0:3]

输出:

为什么 df.loc [0:3] 返回4行,而 df.iloc[0:3] 仅返回3行?

如我们所见,使用 loc 和 iloc 的结果有所不同。造成这种差异的原因是:

  • loc不返回基于索引位置的输出,而是基于索引的标签。
  • iloc根据索引中的位置选择行。这也意味着iloc只能处理整数。

你也可以参考下面的示例,获取更多参考。在下方的示例中,把 index 设置为“name”列,这样你就可以更清楚地理解它的用法和我的解释了。

df4 = df.copy()
df4.set_index('name', inplace = True) 

输出:

接下来让我们再次尝试上面的示例,看看loc如何处理索引标签。

index = ['Chi', 'Sam', 'Hoang']
df4.loc[index] 

输出:

根据条件选择必需列

如果有几百列数据,而你可能只想选择其中的某些列,那么可以在loc语句中的条件之后添加列的列表中。

我们可以通过下面的示例来获取 age≥25 岁的人的“name”、“gender”和“address”。

df.loc[(df.age >=25), ['name','gender','address']] 

输出:

同时选择行和列

1.使用loc、iloc选择所有行和某些特定列

#使用 iloc
df4.iloc[:,[1,2,3]]

#使用 loc和列名称
df4.loc[:, ['address','gender','favourite_fruit']]

输出:

2.使用loc、iloc选择一系列特定的行和列

# 使用 iloc
df4.iloc[2:6,3:4]

# 使用 loc
df4.loc['Sam':'Dung',['favourite_fruit']]

输出:

3.使用loc、iloc选择不相交的行和列

#使用 iloc
df4.iloc[[1,3],[2,4]]

#使用 loc
df4.loc[['Alex','Hoang'],['gender','age']]

输出:

4.使用 get.loc 和索引方法选择行和列

column_start = df4.columns.get_loc('address')
column_end = df4.columns.get_loc('favourite_fruit')
df4.iloc[1:4,column_start:column_end] 

也可以使用.loc方法执行类似的任务。这两个操作产生相同的结果。

row_start = df4.index[1]
row_end = df4.index[3]
df4.loc[row_start:row_end, 'address':'gender']

输出:

在数据帧中选择单个元素

以下几种方法可以选择数据集中的单个元素,包括 loc、iloc、iat 和 at 方法。

通过代码,我们来看看 df4 数据,看看 Hoang 最喜欢的水果是什么?

row_position = df4.index.get_loc('Hoang')column_position = df4.columns.get_loc('favourite_fruit')

#使用 iloc
df4.iloc[row_position,column_position]

#使用 iat
df4.iat[row_position,column_position]

#使用 loc
df4.loc['Hoang','favourite_fruit'] 

#使用 at
df4.at['Hoang','favourite_fruit'] 

基本上,上述4种方法检索都得到了相同的结果,即“watermelon(西瓜)”。但是,这些方法的运行速度略有不同,at 和 iat 方法比 loc 和 iloc 方法快一点。

总结

以上为Pandas筛选数据帧时的一些常用技巧。如果你在学习Pandas,或者需要Pandas来筛选数据,这些技巧值得一学!

相关推荐

快速上手maven

Maven的作用在开发过程中需要用到各种各样的jar包,查找和下载这些jar包是件费时费力的事,特别是英文官方网站,可以将Maven看成一个整合了所有开源jar包的合集,我们需要jar包只需要从Mav...

Windows系统——配置java环境变量

怎么配置java环境变量呢?首先是安装好jdk然后我的电脑右键选择属性然后选择左侧高级系统设置高级然后点环境变量然后在用户变量或系统变量中配置,用户变量指的是只有当前用户可用,系统变量指的是系统中...

ollama本地部署更改默认C盘,Windows配置环境变量方法

ollama是一个大语言模型(LLM——LargeLanguageModel),本地电脑安装网上也要很多教程,看上去非常简单,一直下一步,然后直接就可以使用了。但是我在实操的时候并不是这样,安装完...

# Windows 环境变量 Path 显示样式更改

#怎样学习Java##Windows环境变量Path显示样式更改##1、传统Path环境变量显示:```---》键盘上按【WIN+I】打开系统【设置】---》依次点击---》【系统...

如何在Windows中创建用户和系统环境变量

在Windows中创建环境变量之前您应该了解的事情在按照本指南中所示的任何步骤创建指向文件夹、文件或其他任何内容的用户和系统变量之前,您应该了解两件事。第一个也是最重要的一个是了解什么是环境变量。...

Windows 中的环境变量是什么?

Windows中的环境变量是什么?那么,Windows中的环境变量是什么?简而言之,环境变量是描述应用程序和程序运行环境的变量。所有类型的程序都使用环境变量来回答以下问题:我安装的计算机的名称是什么...

【Python程序开发系列】谈一谈Windows环境变量:系统和用户变量

这是我的第350篇原创文章。一、引言环境变量(environmentvariables)一般是指在操作系统中用来指定操作系统运行环境的一些参数,如:临时文件夹位置和系统文件夹位置等。环境变量是在操作...

系统小技巧:还原Windows10路径环境变量

有时,我们在Windows10的“运行”窗口中执行一些命令或运行一些程序,这时即便没有指定程序的具体路径,只输入程序的名称(如notepad.exe),便可以迅速调用成功。这是因为Windows默认...

Windows10系统的“环境变量”在哪里呢?

当我们在操作系统是Windows10的电脑里安装了一些软件,要通过配置环境变量才能使用软件时,在哪里能找到“环境变量”窗口呢?可以按照下面的步骤找到“环境变量”。说明:下面的步骤和截图是在Window...

系统小技巧:彻底弄懂Windows 10环境变量

每当我们进行系统清理时,清理软件总能自动找到Windows的临时文件夹之所在,然后加以清理,即便是我们重定向了TEMP目录也是如此。究其原因,是因为清理软件会根据TEMP环境变量来判断现有临时文件夹的...

MySQL 5.7 新特性大全和未来展望

本文转自微信公众号:高可用架构作者:杨尚刚引用美图公司数据库高级DBA,负责美图后端数据存储平台建设和架构设计。前新浪高级数据库工程师,负责新浪微博核心数据库架构改造优化,以及数据库相关的服务器存...

MySQL系列-源码编译安装(v8.0.25)

一、前言生产环境建议使用二进制安装法,其优点是部署简单、快速、方便,并且相对"yum/rpm安装"方法能更方便地自定义文件存放的目录结构,方便用脚本批量部署,方便日后运维管理。在生产...

MySQL如何实时同步数据到ES?试试这款阿里开源的神器!

前几天在网上冲浪的时候发现了一个比较成熟的开源中间件——Canal。在了解了它的工作原理和使用场景后,顿时产生了浓厚的兴趣。今天,就让我们跟随我的脚步,一起来揭开它神秘的面纱吧。简介canal翻译为...

技术老兵十年专攻MySQL:编写了763页核心总结,90%MySQL问题全解

MySQL是开放源码的关系数据库管理系统,由于性能高、成本低、可靠性好,成为现在最流行的开源数据库。MySQL学习指南笔记领取方式:关注、转发后私信小编【111】即可免费获得《MySQL进阶笔记》的...

Mysql和Hive之间通过Sqoop进行数据同步

文章回顾理论大数据框架原理简介大数据发展历程及技术选型实践搭建大数据运行环境之一搭建大数据运行环境之二本地MAC环境配置CPU数和内存大小查看CPU数sysctl machdep.cpu...