更多教程请私信~

来源:思路实验室

作者:室长

大家好,欢迎收看思路实验室出品的Python入门教程,我是室长。

今天是个重要的日子,在经过了这么久的学习之后,我们终于要向最有实际应用价值的内容迈进了!

那么今天我们要了解的模块是数据处理,表格整理的主力,是信息爬取,数据可视化的重要基石。有了它,我们可以不用忍受excel那复杂的操作、令人头大的快捷键、坑爹的速度和内存占用,让它彻底沦为工具人!

没错,它就是pandas!

在教程主线第十一期的时候,作为实操,我们已经将pandas模块安装到了环境中,还没有安装的同学可以复习一下。

在我们学习的Python基础数据类型中,好像没有一种数据类型适合制作表格。用列表套列表吧,难以索引,也不好看。如果你知道需要哪行哪列的数据可能还好,如果不知道那是索引不出来的。比如有一个工资表,三行五列,你只能知道第几行第几列的数据是什么,而如果你想知道王老五的某个月工资,对不起,查不出来。

如果是字典套字典呢?可能好一点,用这种方式可以索引:

工资表['王老五']['1月']

但是如果想查询所有人1月份的工资呢?又不太好找,可能需要for循环之类的操作,很麻烦。

当然这些弊端仅仅是很小的例子,在实际应用中会有更多各式各样的需求,目前的数据类型都难以满足。

正因如此,pandas应运而生。

pandas主要提供了两种数据类型及相应的操作方法,分别是SeriesDataFrame。其中Series更像是表格中的某一列数据,比较接近于列表和字典,这个我们后边再讲。而最重要的是DataFrame,一个彻头彻尾为表格而设计的数据类型(语无伦次)!正是由于DataFrame的出现,你可以轻松的将excel表格整个导入到python中去处理,可以通过行索引值和列名准确地定位到你需要的数据,可以整行整列地做数据运算,可以把多个数据表以各种方式整合成一个表!

好的,鸡血打完了,该上点干货了。今天我们就以一个员工个税计算的例子来展示一下pandas的强大功能。

首先我们新建一个代码,用import语句导入pandas模块。因为pandas这个词太长了,我们通常把它改为pd:

接下来我们就可以导入表格了,但在那之前我们先得准备一下表格。

由于pandas读取.xls和.xlsx文件需要用到额外的模块,这一次出于展示的目的我们使用.csv格式的表格来操作。.csv格式的表格也是可以在excel中打开的。

既然是计算员工个税,首先要有一个员工工资表,里边记录着员工的工号,姓名,年收入:

我们把表格放在代码文件夹下。

然后,使用read_csv方法来将表格转换为DataFrame对象并给它一个变量名。这里read_csv的第一个参数坑位填的是表格文件的路径,而后边的参数建议使用关键字参数。

这里我们只用了一个关键字参数,就是index_col,这个参数就是让我们指定索引列。索引列的作用就是让我们一输入指定的索引值就能准确地索引到那一行的内容。而正因如此,索引值必须是各异的,所以我们选择“工号”作为索引列,防止重名的情况出现。我们打印一下DataFrame看看:

可以看到,在Python中这些数据也以表格的形式出现了。

索引值是怎么用的呢?我们可以使用loc方法,将索引值填进去。但这里要注意需要使用方括号而不是圆括号:

看,一行的数据就出来了!

而如果我们想要获取一列的数据呢?这和我们使用字典的方式有些像了:

这是不是看起来非常像字典嵌套字典?

按照这种理解我们可以用这种方法获取数据:

不过这样做的缺点就是先列后行,比较反直觉。

从这里我们也可以看出,对于字典嵌套字典形式的表格,想取出指定一行的数据并不容易。首先需要建立一个空字典,使用keys方法获取原字典所有的键名,并使用for循环,以原字典的键名为键名,以原字典键名对应的值字典里键名为索引值的值为值,建立键值对并添加到新建的字典中,最后返回这个字典。有兴趣的同学可以亲手试试编写一个这样的操作。

但在DataFrame中,你只需要使用loc方法,便可以使用索引值轻松地调取一行数据,比字典嵌套列表不知高到哪里去了。所以大家在处理表格类数据的时候要首先想到使用DataFrame,让它成为你的肌肉记忆。

目前光靠这些信息是无法计算个人所得税的,我们还需要员工专项扣除的信息。但这个信息通常是单独列表统计的,而且有些员工不符合相应条件,不会主动申报,所以通常这个表格里的员工数是小于公司员工数的。那我们应该怎么把这两个行数都不一样的表合并成同一个表,同时各人的数据还能对应得上呢?

我们首先还是要将表格读取为DataFrame,然后再去操作两个DataFrame。到这里我们需要一些基础的数据库知识。

不同表中的数据可以通过某一个有相同点的列连接起来,比如员工工资表和员工专项扣除表。这两个表都有一列是记录工号的,那这一列就可以连接起两个表的数据。好比工资表里有1号员工,他的工资是6w,专项扣除表里也有1号员工,他的专项扣除是5k,那连接后的表格里1号员工就同时具有6w工资和5k专项扣除的数据。

但两个表里记录的工号未必都是一样的,如果一个表里有这个工号,另一个表里没有这个工号,那该怎么连接呢?根据数据取舍的不同可以分为两大类,即内连接外连接

所谓内连接,就是作为连接列里的数据,只有两个表里都有的才加以保留。如果1号员工没有专项扣除信息,那他和他的工资信息也不会出现在新的表中。

而所谓外连接,就是作为连接列里的数据,只要一个表里有,就加以保留,而另一个表里没有的话则设为空值。但外连接也分不同的情况。只要任意一个表里有,就加以保留,属于全连接。只要左表里有就加以保留属于左连接,只要右表里有就加以保留属于右连接。左右连接其实是一回事只是交换了一下顺序。

如果我们需要将工资表和专项扣除表连接起来,很显然我们需要将工资表作为左表,将专项扣除表作为右表,使用左连接进行连接。这里我们需要在左表上使用merge方法。merge方法的第一个参数坑位是右表,而参数how设为我们选用的连接方式,left,参数on设为连接列:

可以看到,两个表已经合体进化成为了一个船新的表格。虽然这个表格仍然需要进行修饰,但我们已经离实现目标不远了!

这一期我们讲解了如何将表格转化为DataFrame,并进行多个表的整合。篇幅所限,这一期我们就讲到这里。下一期我们将讲解如何使用DataFrame进行计算,希望大家多多关注!如果这篇文章对你有所帮助,希望能帮室长点个赞和在看,你的鼓励是室长进步的动力!

【Python教程】有了它,excel彻底沦为工具人|初识pandas模块(一)相关推荐

  1. python教程94--python两个excel表合并,删除不需要的数据操作流程

    开发环境: Mac.python3.8 案例说明: 在日常的Excel操作过程中经常会遇到,两个Excel合并(根据某个条件).删除不需要的数据,用有效的数据进行分析统计的情况. 物料(2个excel ...

  2. pandas输出到excel_学Python还不会处理Excel数据?带你用pandas玩转各种数据处理

    开场白 以前学习 Python 的 pandas 包时,经常到一些 excel 的论坛寻找实战机会.接下来我会陆续把相关案例分享出来,还会把其中的技术要点做详细的讲解. 本文要点: 使用 xlwing ...

  3. python操作excel-python操作excel(内附python教程分享)

    今天学习了下xlwings这个库,目的是为了让计算机自动化操作excel表,当某天需要做一些很繁琐的事情,就可以派上用场啦. python操作excel(内附python教程分享) 基本对象 网上刮来 ...

  4. python可以在excel中应用吗,python怎样在excel中应用?-Python教程

    python正在excel中使用的办法:起首[return sorted(s)]正在内陆建设一个目次,并保留这个代码并定名为[Methods.py]:而后关上Excel,填写一些数据以便提供pytho ...

  5. python列反过来_xlwings 教程:使用Python更快速地处理Excel

    Excel在当今商业中的使用非常普遍.在Dataquest,出于很多原因,我们通常推荐使用代码处理数据,并且我们的许多数据科学课程的目标是教授数据分析和数据科学的高效编码.但是,无论您多么喜欢使用Py ...

  6. python基础教程 excel_python基础教程 excel-python怎么读写excel文件

    excel和python哪个难学 excel 分应用和VBA编程,phthon本就是编程语言,对数据分析来说,excel足够了,而且是最容易学习的数据处理与分析应用软件,Python肯定比excel难 ...

  7. 快速处理表格python_xlwings 教程:使用Python更快速地处理Excel

    Excel在当今商业中的使用非常普遍.在Dataquest,出于很多原因,我们通常推荐使用代码处理数据,并且我们的许多数据科学课程的目标是教授数据分析和数据科学的高效编码.但是,无论您多么喜欢使用Py ...

  8. python xlrd xlwt pandas 模块 区别_python如何读写excel文件|python教程|python入门|python教程...

    https://www.xin3721.com/eschool/pythonxin3721/ python读写excel的方式有很多,不同的模块在读写的方法上稍有区别: 用xlrd和xlwt进行exc ...

  9. Python操作Excel的Xlwings教程(八)——Excel使用VBA调用Python

    这次推文的主题,在Xlwings中使用VBA的宏来进行Excel的操作. 知识准备 在Xlwings的官方文档中,我寻找到了一个关于Python API的东西.传送门如下: https://docs. ...

最新文章

  1. 比PCA更好用的监督排序—LDA分析、作图及添加置信-ggord
  2. python处理excel教程实例-Python玩转Excel的读写改实例
  3. docker file 打包jar_Spring Boot 的项目打包成的 JAR 包,制作成 docker 镜像并运行
  4. java Dated Dateformat Calendar
  5. exc读入到matlab,matlab外部程序接口-excel
  6. 分布式架构的session问题
  7. php中mysqlstat函数,PHP函数mysql_stat介绍
  8. 13位数字转日期 oracle_12amp;13. 整数转罗马数字 - 中等amp;简单
  9. Storm入门学习随记
  10. mysql双机热备 读写分离_轻松搭建MySQL主从复制、读写分离双机热备)
  11. CMOS checksum error-Defaults loaded 故障解决办法
  12. 深度剖析MQTT协议的整个通信流程
  13. 锁定计算机和睡眠有什么区别,电脑的睡眠和休眠选项有什么区别?怎么唤醒休眠的电脑?...
  14. Java个人职业规划目标改进_java个人职业发展方向规划范文
  15. 塔米狗分享|2022年企业并购创新的融资方式有哪些
  16. HTTP状态码完整介绍
  17. 概率统计基础(一): 随机变量与随机事件
  18. 前缀和(一维数组+二维数组+差分)
  19. 我的世界服务器怎么做无限商店,我的世界无限商店指令 | 手游网游页游攻略大全...
  20. java河南口腔医疗机构线上服务系统计算机毕业设计MyBatis+系统+LW文档+源码+调试部署

热门文章

  1. STM32F103 CAN通讯实操
  2. 怎么修复GoPro运动相机断电损坏打不开的MP4视频
  3. java 文件名 问号_log4j日志文件名与行号显示乱码? 问号? 参数问号? 日志问号?【转】【补】...
  4. 迪杰斯特拉,弗洛伊德,bellman-ford和SPFA的学习笔记
  5. linux查看目录文件系统,linux 怎么查看文件系统在哪个目录下
  6. AJAX各种实现方式
  7. k8s篇-yaml部署nfs storageclass
  8. springboot大学生拼车管理系统 毕业设计-附源码201507
  9. python代码写父亲节快乐_八大编程语言之父:爸爸们节日快乐!
  10. 详解ETL银行数据仓储抽取和加载流程概述