写在前面

本期准备讲一下最近常用的一些关于pandas库的一些话题,至于重点则是放在介绍怎么使用pandas库来快速完成Excel中的筛选和编辑功能。下面正式进入本期的主题。

第一讲:Excel中的筛选和编辑

Excel,相信对各位来说都不会陌生吧。作为一名办公人士,我们在日常工作中最常用的Excel功能可能是数据透视表,但是,绝对不能否定的一点就是,Excel中的筛选功能绝对是我们最熟悉的Excel操作之一。你如果真的是一名中规中矩的办公人士的话,相信你对下面的这种表格绝对不会陌生。如果你想按照本文的顺序进行练习的话,那么请直接下载本文所采用的案例文件sample_sale。

是不是很熟悉的界面,假设你想筛选出其中账号,编码为141962,sku以B1开头的所有记录,那么就会使用这种筛选方式,当然你肯定会比小编更加熟练地使用这种功能。当然,很多时候,筛选只是前提,而后是要针对被筛选出来的数据进行一定的操作,例如对于上面符合条件的记录,增加一列佣金率,并将这些满足筛选条件的记录统一赋值为0.05,如果我们都比较规矩的话,那么应该会得到下面这张表:

本例中,小编选择了账号编码为141962,sku以B1开头的记录,同时为其增加了佣金率一列,并将其赋值为0.05.很明显,通过Excel进行这些操作方便快捷,而且不需要你会Excel函数以及vba基础就可以操作相对复杂的数据。然而,通过这种操作,至少存在两处不便:其一,你不能使你的操作重复进行,如果下次你遇到同类型的问题,你必须再次按照同样的流程再来一遍;其二,单纯地通过筛选后的数据表你并不能看出到底对数据赋予了什麼筛选条件,所以使得你每次筛选前必须先了解清楚前次操作都执行了什麼筛选(当然你可以直接清除所有的筛选条件,重新进行筛选,但是你要知道,虽然这不是很浪费时间,但是也是时间呀),这就造成了一定的不便。鉴于这两点,作为习惯偷懒的我们自然会想是否存在着另外的优质方法,那么这里小编就要告诉你,欢迎来到Python的世界,Python中的pandas库是你的首选,所以,下面小编就和大家唠唠怎么使用pandas库完成这种Excel操作。

第二讲:Pandas执行Excel筛选与编辑操作

pandas库是Python中的一个第三方库,如果你是按照笔者的推荐安装了Anaconda的话,那么这个库就已经默认安装了,如果你尚未安装这个Python库,那么可以通过在命令行中输入一下命令进行安装:

pip install numpy

pip install pandas

在安装pandas库之前最后先安装numpy库,因为pandas库就是基于numpy库进行开发的,所以最后能把他的老头子也带进你的圈子。这里笔者不会完整地介绍各种Python库的安装流程,如果你在安装过程中出现问题可以自行百度,也可以在问候或者小编的博客给小编留言。一旦安装好了这些库,你就告别了数据处理的石器时代,而正式迈入了二十一世纪。

2.1 布尔索引

前面笔者已经和大家讲过什麼是布尔值,那么布尔索引,顾名思义就是一句布尔值的真假进行相关位置的索引。pandas库对于数据表的筛选就是依赖于这种布尔索引,索引小编这里有必要再一次和大家聊一下这种索引方式。小编这里先创建一个pandas数据框,然后以此进行讲解。

import pandas as pd # 导入pandas库,并命名为pd

df = pd.DataFrame({'Account Name':['张三','李四','王五','赵六'],'Total Sales':[120,234,125,342],'City':['GuangZhou','GuangZhou','ShenZhen','ShenZhen']})

>>> df

Account Name

Total Sales

City

0

张三

120

GaungZhou

1

李四

234

GaungZhou

2

王五

125

ShenZhen

3

赵六

342

ShenZhen

可以看到,在生成的表格中默认在第一列生成了0,1,2,3这些编号,虽然在这些编号没有解释意义,但是它们却很方便地为索引创造了条件,当然你如果实在不喜欢这种索引,你也可以指定自己的索引值,这里小编就不予以介绍了。现在假设你想获得张三、王五、赵六的相关记录,那么你完全可以通过以下方式获得:

>>> Indices = [True,False,True,True]

>>> df[Indices]

Account Name

Total Sales

City

0

张三

120

GaungZhou

2

王五

125

ShenZhen

3

赵六

342

ShenZhen

发现一个有趣的现象了吗,第一列的索引号并没有重新排列,而是还是按照原来的索引号进行,现在知道为什麼小编说过这种索引很有用了吧,因为它会随时让你了解你改动了哪里,删去了哪里,以便让你随时有后悔药可以吃。既然了解了这种方式,那么你就不会让自己尽量少输入,而是通过判断得出布尔值进而去执行索引。想想一下,假设你现在想去获得来自于广州的客户记录,你会怎么做?当然你完全可以通过重新赋值一个变量Indices=[True,True,False,False]来执行索引,但是为什麼不尝试更加快捷的方式呢?

>>> df[df.City == 'GuangZhou']

Account Name

Total Sales

City

0

张三

120

GaungZhou

1

李四

234

GaungZhou

我想你现在应该对布尔索引有所印象了吧,那么现在就不要再迟疑了,利用这一武器来完成Excel的解救任务吧。

2.2 pandas执行筛选

上文采用布尔索引,一般我们得出的所有列的数据,但是,现实中我们可能并不是需要所有列的数据,因此Python设计了三种列索引方式从而去引用相应的列。

loc这种索引是按照列名进行选择,可以选择单个列名,当然也可以选择多列

iloc这种方式是按照列名的相对顺序进行选择,即按照0,1,2……进行选择

ix综合的选择方法,既可以扮演loc的角色,又可以扮演iloc的角色,不过小编强烈建议不要使用这种索引,除非你实在不明白loc和iloc。

只说理论不是小编的风格,小编还是以例子来进行说明,这里还是采用前面创建的df数据框来说明loc和iloc的用法,正如小编已经说到的那样,不推荐使用ix,所以这里就不介绍它的用法了。假设你现在想获取来源与广州的客户的销售信息,那么你可以采用下面两种方法中的任意一种达到目的:

df[df.City == 'GuangZhou','Total Sales'] # loc方式

df[df.City == 'GaungZhou',1] # iloc方式

所以你明白两种用法了吗?小编日常工作中,常常会将数据表整理成比较容易分析的数据表,是故每一列自然是被赋予了很好的列名的,因此在后续的分析中,小编将主要使用loc来进行列的索引。上面只是对一列的所以,我们自然可以通过赋予多个列名来进行多列的索引了。

>>> df[df.City == 'GaungZhou',['Account Name','Total Sales']]

Account Name

Total Sales

0

张三

120

1

李四

234

所以不要限制你的想象,Python中的pandas库总会给你意想不到的解决方案,既然现在已经学会了筛选数据,那么可以接着进行pandas库的第二项任务介绍了。

2.3 pandas执行编辑

既然已经知道怎么筛选数据表,那么接下来你就可以按照需要进行数据的编辑了。这里还是以我们自创的数据框为例进行说明。假设你现在想在原数据表中增加一列佣金率,并且都将其赋值为0.01,那么你可以通过一条很简短的语句完成其构造。

>>> df['Commision_Rate'] =,0.01

Account Name

Total Sales

City

Commisin_Rate

0

张三

120

GaungZhou

0.02

1

李四

234

GaungZhou

0.02

2

王五

125

ShenZhen

0.02

3

赵六

342

ShenZhen

0.02

通过这一命令,现在你加入了一列佣金率列,,并都将其赋值为了0.02,但是一般对大客户总是需要有些优惠的嘛,所以现在你考虑将其中销售额大于200的客户的佣金率定为0.01,如果在Excel中操作,那么你必须要先筛选出来然后再重新赋值,最后再清除筛选,但是使用pandas,仍然还是一条语句(如果你熟练了pandas库的操作运用其实很多Excel中的功能都是可以通过一条语句完成的)。

>>> df[df['Total Sales'] > 200,['Commision_Rate']] = 0.01

Account Name

Total Sales

City

Commisin_Rate

0

张三

120

GaungZhou

0.02

1

李四

234

GaungZhou

0.01

2

王五

125

ShenZhen

0.02

3

赵六

342

ShenZhen

0.01

现在已经完成了对于pandas执行Excel筛选和编辑功能的基本介绍,现在是时候来一个综合性的例子进行操作了,你准备好了吗?

2.4 综合示例

本示例以Excel文件Sales.xlsx为例进行说明,想同步进行的朋友请务必先下载分析中所使用的数据表。我们现在的数据处理要求主要有以下几点:

所有商品的佣金率在基准佣金率上进行调整,基准佣金率为0.02;

衬衫类(Shirt)商品的佣金率为0.025;

腰带(Belt)销量超过10条的佣金率为0.04;

鞋类(Shoes)销售额超过1000的,在享受0.045的佣金率的同时可以再额外获得250的奖金

计算出个客户最终可以获得的补偿

现在既然已经明白了数据处理需求,那么下面就是针对每一条要求进行程序编写。小编这里直接上程序,在程序内对各要求进行说明:

# 导入pandas库,并读取Excel文件Sales

import pandas as pd

df = pd.read_excel('Sales.xlsx') # 这一步操作建立在你的Excel文件处于你的工作路径中,否则使用`cd`命令改变操作路径

# 增加佣金率列,并赋值为0.02

df['Commission_Rate'] = 0.02

# 衬衫类佣金率为0.025

df.loc[df.category == 'Shirt',['Commission_Rate']] = 0.025

# 腰带(Belt)销量超过10条的佣金率为0.04

df.loc[(df.category == 'Belt')&(df.quantity > 10),['Commission_Rate']] = 0.04

# 鞋类(Shoes)销售额超过1000的,在享受0.045的佣金率的同时可以再额外获得250的奖金

df['bonus'] = 0.0

df.loc[(df.category == 'Shoes')&(df['ext price'] > 1000),['bonus','Commission_Rate'] = 250,0.045

# 计算出各客户最终可以获得的补偿

df['compesation'] = df.Commission_Rate*df['ext price'] + df.bonus

现在已经完成了分析,你可以看一下最后的输出数据表结果:

后记

文章写到这里已告一段落,本期文章主要介绍了怎么使用Python中的pandas库来执行Excel中常见的筛选和编辑操作,从而了解到了Excel中相对繁琐的鼠标操作完成可以由较为简单的Python程序予以实现。当然,本文的介绍相对来说还较为简单,后期,笔者会继续进行这一方面的介绍,以期真正实现Excel办公的Python化。最后再一次感谢你们的支持,你们的支持使我奋力前行!

pythonpandas筛选_Python+pandas执行Excel筛选编辑功能相关推荐

  1. python实现excel筛选功能并输出_Python商务办公系列——pandas实现Excel筛选和编辑...

    写在前面 各位大大,晚上好,我想死你们了!相信看这两期文章的朋友可能会注意到,这两期文章的开头都附带了小编自己的个人博客网址,没错,正是在这几周,小编终于完成了对于自己博客的搭建工作,以后小编会在微信 ...

  2. python怎么筛选excel数据_Python如何实现excel筛选后生成新表

    Python如何实现excel筛选后生成新表 xlrd对exce进行读操作,xlwt对exce进行写操作. 实现把excel中某些单元格的部分字符作为关键字,进行查找.话不多说直接上代码.# -*- ...

  3. python能实现excel什么功能_Python pandas对excel的操作实现示例

    最近经常看到各平台里都有Python的广告,都是对excel的操作,这里明哥收集整理了一下pandas对excel的操作方法和使用过程.本篇介绍 pandas 的 DataFrame 对列 (Colu ...

  4. python pandas excel 排序_Python pandas对excel的操作实现示例

    最近经常看到各平台里都有Python的广告,都是对excel的操作,这里明哥收集整理了一下pandas对excel的操作方法和使用过程.本篇介绍 pandas 的 DataFrame 对列 (Colu ...

  5. excel自动筛选_自动更改Excel筛选器标题

    excel自动筛选 There was a question about Excel Advanced Filter criteria on the Tech Republic blog recent ...

  6. python pandas 读取excel单元门公式值_Python pandas对excel的操作实现示例

    最近经常看到各平台里都有Python的广告,都是对excel的操作,这里明哥收集整理了一下pandas对excel的操作方法和使用过程.本篇介绍 pandas 的 DataFrame 对列 (Colu ...

  7. python 按列名称筛选_python中实现excel的高级筛选

    一 Excel里的高级筛选功能,着实令人惊叹,VBA里实现起来也相对简单,就是手动操作的代码化,设置好三项参数,便可以随取随用,效果稳准快. 二 在python 中实现同样的目的,更为直白爽快,不信你 ...

  8. stream 多个字段分组_Python Pandas对Excel数据的分组聚合和数据透视

    使用Excel进行商业数据分析的时候,最重要的就是两个手段就是vlookup函数和数据透视表.本章就讲解一下与数据透视功能相关的分组聚合和数据透视.其实分组聚合和数据透视两者基本是等价的,但由于使用的 ...

  9. python合并excel工作簿_Python pandas实现excel工作表合并功能详解

    import os,pandas as pd,re #1.获取文件夹下要合并的文件名 dirpath = '文件夹地址' #工作表3特殊处理 需要开始下标和结束下标 begin = 231 end = ...

最新文章

  1. 知识图谱query与文本相似性如何处理
  2. MySQL数据库--连接
  3. 0.QObject的数据存储
  4. 记asp.net VB与C# 页面参数传值
  5. ecshop 删除订单时提示“以下订单无法被移除”的解决办法
  6. android 代码设置EditText的hint字符
  7. 数学--数论--同余及其性质(超详细)
  8. websockets_使用Java WebSockets,JSR 356和JSON映射到POJO的
  9. Sublime Text批量删除空白行
  10. 10kv线路负载率计算_10kV配电线路保护的整定计算
  11. 【mybatis系列】自定义实现拦截器插件Interceptor
  12. mysql的socket文件_修改socket文件, MySQL启动报错
  13. 台式电脑调整屏幕亮度
  14. OGNL 过滤与投影
  15. 系统集成资质-2009年5月系统集成项目管理工程师真题-1
  16. 网易126免费邮箱更改手机号(亲测有效)
  17. 计算机硬件具体都包含哪些,电脑硬件包括哪些
  18. 大白菜android模拟器,大白菜U盘启动制作工具uefi体验版 V5.0
  19. 关于RC阻容复位电路的问题
  20. RTT简介及其简单应用

热门文章

  1. 个税专项附加扣除政策要点
  2. 用python画小花_用python的小海龟 Turtle 画一朵好看又有趣的小花-Go语言中文社区...
  3. Apache Dubbo RSocket Gateway 入门教程
  4. 202-03-01 RK3399 HDMI部分显示器显示偏绿的问题
  5. 压缩软件历史--转载
  6. Android12 LCD圆角改直角
  7. 关于区块链及其与物联网的集成-挑战与机遇
  8. 操作系统实验一、线程的创建与撤销
  9. 【MODIS数据处理#12】例七:基于MOD09Q1数据集合成NDVI
  10. Django之ORM多表一对多、多对多及一对一操作