Excel提取符合条件的数据?

最近助教改作业导出的成绩表格跟老师给的名单顺序不一致,脑壳一亮就用pandas写了个脚本自动吧原始导出的成绩誊写到老师给的名单中了哈哈哈,这里就记录下用到的pandas处理excel的常用方式。(注意:只适用于.xlsx类型的文件)


a)读取第n个Sheet(子表,在左下方可以查看或增删子表)的数据

# 每次都需要修改的路径

可以注意到,原始表格左上角没有填入内容,读取的结果是“Unnamed: 0” ,这是由于read_excel函数会默认把表格的第一行为列索引名。另外,对于行索引名来说,默认从第二行开始编号(因为默认第一行是列索引名,所以默认第一行不是数据),如果不特意指定,则自动从0开始编号,如下。

# 查看列索引名,返回列表形式 # 查看行索引名,默认从第二行开始编号,如果不特意指定,则自动从0开始编号,返回列表形式

b)列索引名还可以自定义,如下:

# 查看列索引名,返回列表形式

c)也可以指定第n列为行索引名,如下:

# 指定第一列为行索引
 
d)读取时跳过第n行的数据

# 跳过第2行的数据(第一行索引为0)
 

2、获取表格的数据大小:shape

 
# 指定第一列为行索引
 

 

可以使用方括号加列名的方式 [col_name] 来提取某列的数据,然后再用方括号加索引数字 [index] 来索引这列的具体位置的值。这里索引名为name1的列,然后打印位于该列第1行(索引是1)位置的数据:4,如下: # 打印该列第二个数据
2、iloc方法,按整数编号索引
使用 sheet.iloc[ ] 索引,方括号内为行列的整数位置编号(除去作为行索引的那一列和作为列索引的哪一行后,从 0 开始编号)。
a)sheet.iloc[1, 2] :提取第2行第3列数据。第一个是行索引,第二个是列索引

# 指定第一列数据为行索引
# 读取第2行(row2)的第3列(6)数据
# 第一个是行索引,第二个是列索引
# 通过分片的方式提取 前两行 数据
# 通过分片的方式提取 前两行 的 前两列 数据
 
3、loc方法,按行列名称索引


使用 sheet.loc[ ] 索引,方括号内为行列的名称字符串。具体使用方式同 iloc ,只是把 iloc 的整数索引替换成了行列的名称索引。这种索引方式用起来更直观。




# 指定第一列数据为行索引
# 读取第2行(row2)的第3列(6)数据
# 第一个是行索引,第二个是列索引
# 通过分片的方式提取 前两行 数据
# 通过分片的方式提取 前两行 的 前两列 数据
 

 

# 打印该列第二个数据

5、查找符合条件的数据

 
 

 

 
增加列,直接使用中括号 [ 要添加的名字 ] 添加。
# 指定第一列为行索引

 



当 inplace 参数为 True 时,不会返回参数,直接在原数据上删除
当 inplace 参数为 False (默认)时不会修改原数据,而是返回修改后的数据

使用 label=[ ] 参数可以删除多行或多列

 



比如修改原表格中的 nan 为 100 后,保存文件: # 指定第一列为行索引

}

哈喽大家好,这里是一周进步。

Excel 中的「排序」和「筛选」,是我们再熟悉不过的数据处理工具了吧!

其中「筛选」功能在数据很多的时候,用来提取出符合要求的数据,效率非常高。

比如说,在一堆部门人员信息中提取出运营部的人员名单,或者在本月销售商品中筛选出销量大于10000的商品,都是非常基础的操作:

只要点击数据区域的某一单元格,然后在「数据」选项卡——「排序和筛选」中点击「筛选」,再在下拉菜单中勾选你想要的条件,即可完成数据的筛选。


这样的筛选操作非常简单,但与此同时,它也只能满足一些简单的需求。

所以今天想分享给大家关于筛选的用法盘点,让工作效率更上一层楼。

Excel 中的「筛选」大致可以分为「基础筛选」和「高级筛选」,掌握两者的一些操作,可以帮助我们应对更多处理数据的场景。

-1. 单个/多个条件直接勾选

单个条件是最基础的筛选,多个条件也就是 “且” 的关系,比如:

单个条件筛选出「职称」为「助工」的人员。

step 01:选中数据区域某一单元格,点击「数据选项卡—排序和筛选—筛选」添加好筛选按钮;

step 02:在「职称」下拉菜单中勾选「助工」。

多个条件筛选出「职称」为「助工」,且「性别」为「女」的员工。

step 01:选中数据区域某一单元格,点击「数据选项卡—排序和筛选—筛选」添加好筛选按钮;

step 02:在「职称」下拉菜单中勾选「助工」;

step 03:在「性别」下拉菜单中勾选「女」。


-2. 数字/日期/文本筛选

筛选器会根据该列数据为数字 / 日期 / 文本来显示对应的筛选,比如:

数字可以筛选出前 n 项,文本可以筛选出开头/结尾为某些字的数据,日期可以按月份来提取数据等等。




当下拉菜单中项目很多,不便一个个去寻找时,可以在搜索框输入条件,直接筛选出结果。


如果下拉中有些项目含有相同的部分,这时需要加上英文状态下的双引号,才可以找到最精确的值哦。

比如,「工程师」和「高级工程师」都含有“工程师”三个字,那么在搜索框输入「工程师」三个字时,会将高级工程师和工程师这两项都筛选出来;

如果想精确搜索出「工程师」,在搜索框输入时需要加上英文状态下的双引号,即"工程师"。


从①精确查找得知,没有加上英文状态下的双引号即默认模糊查找。

但这里有两个通配符的使用,可以帮助我们在模糊查找到的数据中,进一步筛选出符合条件的数据:

英文状态下的问号:?表示任意一个字符

星号:*表示任意多个字符

问号 ? 的使用:如果职位中含有工程师、中级工程师和高级工程师,可以输入:??工程师(英文状态下的问号)

来找到带有中级和高级头衔的工程师(中级和高级都是两个字,所以输入两个问号)。


星号 * 的使用:如果想找出结尾带 “工” 字的职称,可以输入:*工,表示只要结尾是工字,前面为任意多个字符的职称都可以被筛选出来。


-3. 将当前所选内容添加到筛选器

如果我们想同时筛选出「年龄」是“30多岁”或者“50多岁”的员工,这时候需要用到「将所选内容添加到筛选器」:

step 01:在搜索框输入 3* 筛选出30多岁的员工

step 02:再次点击搜索框,输入 5*

step 03:勾选「将当前所选内容添加到筛选器」


在上一个问题中,我们知道可以在同一列数据中筛选出符合 “或”关系的选项,即:筛选出「年龄」是“30多岁”或者“50多岁”的员工。

但如果想筛选出「年龄」大于50岁,或者「性别」为女的员工呢?

这里「年龄」和「性别」处于不同列,所以用常规的筛选是做不到的,这时候就需要用到「高级筛选」啦。

高级筛选的对话框包括几个选项

①选择在原有区域显示筛选结果 / 将筛选结果复制到其他位置

②列表区域(即想要作筛选的目标区域)

③条件区域(即想用什么条件来筛选)

④复制到(即在①选择复制到其他位置的基础上,选择一个单元格作为复制区域的起始单元格)


高级筛选一个基础的作用是「提取不重复值」,比如我们想将「职称」这一列包含的不同职称罗列出来,用高级筛选就可以轻松做到。

step 01:选中「职称」列,点击「数据选项卡—排序和筛选—高级」,此时对话框的「列表区域」便会显示为选中的「职称」列区域;

step 02:选择「将筛选结果复制到其他位置」,「条件区域」保留空白,无需选择;

step 03:光标置于「复制到」的框中,点击其他区域的某一个单元格,勾选「选择不重复的记录」。


-2. “且”和“或”条件区域的构建

前面说到要筛选出满足不同列的 “或”关系的数据(即筛选出「年龄」大于50岁,或者「性别」为女的员工),需要用高级筛选来完成。

这里关键在于条件区域的构建:“且”的关系,同行构建;“或”的关系,错行构建。

筛选出性别为女,且年龄大于50岁的员工。

根据“且”的关系,同行构建,我们构建出来的条件区域是这样的:


(性别和年龄的条件录入在同一行)

筛选出性别为女,或年龄大于50岁的员工。

根据“或”的关系,错行构建。我们构建出来的条件区域应该是这样的:


(性别和年龄的条件错行录入)

回到开头的问题:筛选出「年龄」大于50岁,或者「性别」为女的员工。

构建好了条件区域,问题就不难解决了:

step 01:点击数据区域某一单元格,在「数据选项卡—排序和筛选」中点击「高级」,弹出设置对话框;

step 02:点击对话框中「列表区域」的位置,把原数据区域选中;

step 03:点击对话框中「条件区域」的位置,把我们构建好的条件区域选中;

step 04:勾选对话框中的「将筛选结果复制到其他位置」;

step 05:点击对话框中「复制到」的位置,在工作表中空白区域,点击某一单元格作为筛选数据放置的起始单元格。


再来一个问题练练手:筛选出所有男性、大于50岁的女员工或者职称为助工的员工。

这里演示下构建出来的条件区域是什么样的:


(为了方便,条件区域的一些字段标题等单元格可以直接从原表区域复制过来)

所有男性、大于50岁的女员工、职称为助工的员工,这三者是“或”的关系,所以错行构建;

同时大于50岁的女员工中,大于50和性别为女为“且”的关系,所以同行构建。

-3. 筛选出符合条件的部分记录

有时候我们不需要把所有信息都筛选出来,只需要部分记录,比如说:

筛选出「年龄」大于50岁,或者「性别」为女的员工,但筛选出来的区域只要有员工姓名、职称和岗位级别这几列就够了。该怎么操作呢?

这里我们可以先将这几列的字段标题复制出来放在一边的空白区域:


然后是类似的操作,但是「复制到」的区域选择,不再是选中空白区域的某一单元格,而是把我们复制出来的标题以及它下方的一行空白行一起选中:


先放个例子辅助理解:下图中我们想筛选出公司名为「一周」的记录,如果条件区域直接录入一周两个字,结果会怎么样呢?


可以看到,条件直接录入一周,会将原数据区域中一周后面带有其他文字的数据也筛选出来,对此我们需要添加点东西来辅助它精确查找。

先输入英文状态下的上逗号「'」(目的是将单元格的格式转化为文本格式),再输入「=一周」:


-5. 通配符在高级筛选中的使用

前面我们说到基础筛选中可以使用的两个通配符:* 和 ?。它们在高级筛选中同样适用。

但与上一点类似的,大部分情况无法精确查找。

举个例子,我想要搜索公司名为:一周后面带两个字的公司,那按理说条件应该是:一周??


但可以发现,最后的结果带有「一周进步进步」这行数据。

因此对于通配符的使用,建议按照精确查找的方式加上等号,防止查找出错。

还是上面这个问题,我们的解决方法是在条件区域录入:'=一周??


再来一个问题练练手:筛选出公司名以「进步」结尾的公司,我们先用「*进步」作为条件来筛选一下:


筛选出来后是包含「进步」两个字的所有公司,我们再用「'=*进步」尝试下:


综合以上两个问题的求解,在高级筛选中使用通配符时,建议用上等号防止出错。

虽然 * 的使用在某种情况下不加等号也没问题,但为了不增加记忆负担,建议还是统一。

今天给大家分享的 Excel 筛选技巧就是这些,希望能借此提高大家使用 Excel 做筛选的效率,一起复习下知识点吧~

-1. 单个/多个条件直接勾选

-2. 数字/日期/文本筛选

-4. 将当前所选内容添加到筛选器

-2. “且”和“或”条件区域的构建

-3. 筛选出符合条件的部分记录(在复制到的区域先把字段标题粘贴好)

-4. 精确查找(上逗号和等号的使用)

-5. 通配符在高级筛选中的使用(上逗号和等号的使用)

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

}

【excel里如何按条件提取数据库】内容共 100 条

  • 一条SQL,在数据库中是如何执行的呢?相信很多人都会对这个问题比较感兴趣。当然,要完整描述一条SQL在数据库中的生命周期,这是一个非常巨大的问题,涵盖了SQL的词法解析、语法解析、权限检查、查询优化、SQL执行等一系列

  • 一条SQL,在数据库中是如何执行的呢?相信很多人都会对这个问题比较感兴趣。当然,要完整描述一条SQL在数据库中的生命周期,这是一个非常巨大的问题,涵盖了SQL的词法解析、语法解析、权限检查、查询优化、SQL执行等一系列的步骤,简短的篇幅是绝对无能为力的。因此,本文挑选了其中的部分内容,

  • 案例是通过一个智能网关,实现PLC与数据库的双向通讯,根据PLC中的数值查询数据库中的数据,然后将结果返回给PLC,采用的是西门子的PLC和SQLServer数据库数据库网关软件与手册PLC如何数据写入SQL数据库存入多个数据表 首先建立数据库Database,然后建立数据表Report1,表结构如下图: 然后在数据表中填入数据,实现PL...

  • 禹晓实际的工作中,我们经常会碰到统计数据的工作,有些维度的统计数据因为工作需要我们需要导出为excel作为报表附件供不同的部门审查。为了方便以后的对比工作,领导会让在数据库中创建一张表,用于专门记录这些数据。此时我们DBA需要将这些excel表格导入到数据库中,copy和\copy命令为我们提供了解决办法,本文主要通过copy命令的使用,介绍

}

我要回帖

更多关于 如何用函数筛选出符合条件的数据 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信