Python利用pandas处理Excel数据的应用详解


Posted in Python onJune 18, 2019

最近迷上了高效处理数据的pandas,其实这个是用来做数据分析的,如果你是做大数据分析和测试的,那么这个是非常的有用的!!但是其实我们平时在做自动化测试的时候,如果涉及到数据的读取和存储,那么而利用pandas就会非常高效,基本上3行代码可以搞定你20行代码的操作!该教程仅仅限于结合柠檬班的全栈自动化测试课程来讲解下pandas在项目中的应用,这仅仅只是冰山一角,希望大家可以踊跃的去尝试和探索!

一、安装环境:

 1:pandas依赖处理Excel的xlrd模块,所以我们需要提前安装这个,安装命令是:pip install xlrd

2:安装pandas模块还需要一定的编码环境,所以我们自己在安装的时候,确保你的电脑有这些环境:Net.4 、VC-Compiler以及winsdk_web,如果大家没有这些软件~可以咨询我们的辅导员索要相关安装工具。

3:步骤1和2 准备好了之后,我们就可以开始安装pandas了,安装命令是:pip install pandas

一切准备就绪,就可以开始愉快的玩耍咯!

ps:在这个过程中,可能会遇到安装不顺利的情况,万能的度娘有N种解决方案,你这么大应该要学着自己解决问题。

二、pandas操作Excel表单

数据准备,有一个Excel文件:lemon.xlsx有两个表单,表单名分别为:Python 以及student,

Python的表单数据如下所示:

Python利用pandas处理Excel数据的应用详解

student的表单数据如下所示:

Python利用pandas处理Excel数据的应用详解

1:在利用pandas模块进行操作前,可以先引入这个模块,如下:

import pandas as pd

2:读取Excel文件的两种方式:

#方法一:默认读取第一个表单
df=pd.read_excel('lemon.xlsx')#这个会直接默认读取到这个Excel的第一个表单
data=df.head()#默认读取前5行的数据
print("获取到所有的值:\n{0}".format(data))#格式化输出

得到的结果是一个二维矩阵,如下所示:

Python利用pandas处理Excel数据的应用详解

#方法二:通过指定表单名的方式来读取
df=pd.read_excel('lemon.xlsx',sheet_name='student')#可以通过sheet_name来指定读取的表单
data=df.head()#默认读取前5行的数据
print("获取到所有的值:\n{0}".format(data))#格式化输出

得到的结果如下所示,也是一个二维矩阵:

Python利用pandas处理Excel数据的应用详解

#方法三:通过表单索引来指定要访问的表单,0表示第一个表单
#也可以采用表单名和索引的双重方式来定位表单
#也可以同时定位多个表单,方式都罗列如下所示
df=pd.read_excel('lemon.xlsx',sheet_name=['python','student'])#可以通过表单名同时指定多个
# df=pd.read_excel('lemon.xlsx',sheet_name=0)#可以通过表单索引来指定读取的表单
# df=pd.read_excel('lemon.xlsx',sheet_name=['python',1])#可以混合的方式来指定
# df=pd.read_excel('lemon.xlsx',sheet_name=[1,2])#可以通过索引 同时指定多个
data=df.values#获取所有的数据,注意这里不能用head()方法哦~
print("获取到所有的值:\n{0}".format(data))#格式化输出

具体结果是怎样的,同学们可以自己一个一个的去尝试,这个结果是非常有意思的,但是同时同学们也发现了,这个数据是一个二维矩阵,对于我们去做自动化测试,并不能很顺利的处理,所以接下来,我们就会详细的讲解,如何来读取行号和列号以及每一行的内容 以及制定行列的内容。

三、pandas操作Excel的行列

1:读取指定的单行,数据会存在列表里面

#1:读取指定行
df=pd.read_excel('lemon.xlsx')#这个会直接默认读取到这个Excel的第一个表单
data=df.ix[0].values#0表示第一行 这里读取数据并不包含表头,要注意哦!
print("读取指定行的数据:\n{0}".format(data))

得到的结果如下所示:

Python利用pandas处理Excel数据的应用详解

2:读取指定的多行,数据会存在嵌套的列表里面:

df=pd.read_excel('lemon.xlsx')
data=df.ix[[1,2]].values#读取指定多行的话,就要在ix[]里面嵌套列表指定行数
print("读取指定行的数据:\n{0}".format(data))

3:读取指定的行列:

df=pd.read_excel('lemon.xlsx')
data=df.ix[1,2]#读取第一行第二列的值,这里不需要嵌套列表
print("读取指定行的数据:\n{0}".format(data))

4:读取指定的多行多列值:

df=pd.read_excel('lemon.xlsx')
data=df.ix[[1,2],['title','data']].values#读取第一行第二行的title以及data列的值,这里需要嵌套列表
print("读取指定行的数据:\n{0}".format(data))

5:获取所有行的指定列

df=pd.read_excel('lemon.xlsx')
data=df.ix[:,['title','data']].values#读所有行的title以及data列的值,这里需要嵌套列表
print("读取指定行的数据:\n{0}".format(data))

6:获取行号并打印输出

df=pd.read_excel('lemon.xlsx')
print("输出行号列表",df.index.values)

输出结果是:
输出行号列表 [0 1 2 3]

7:获取列名并打印输出

df=pd.read_excel('lemon.xlsx')
print("输出列标题",df.columns.values)

运行结果如下所示:
输出列标题 ['case_id' 'title' 'data']

8:获取指定行数的值:

df=pd.read_excel('lemon.xlsx')
print("输出值",df.sample(3).values)#这个方法类似于head()方法以及df.values方法

输出值
 [[2 '输入错误的密码' '{"mobilephone":"18688773467","pwd":"12345678"}']
 [3 '正常充值' '{"mobilephone":"18688773467","amount":"1000"}']
 [1 '正常登录' '{"mobilephone":"18688773467","pwd":"123456"}']]

9:获取指定列的值:

df=pd.read_excel('lemon.xlsx')
print("输出值\n",df['data'].values)

四:pandas处理Excel数据成为字典

我们有这样的数据,Python利用pandas处理Excel数据的应用详解,处理成列表嵌套字典,且字典的key为表头名。

实现的代码如下所示:

df=pd.read_excel('lemon.xlsx')
test_data=[]
for i in df.index.values:#获取行号的索引,并对其进行遍历:
  #根据i来获取每一行指定的数据 并利用to_dict转成字典
  row_data=df.ix[i,['case_id','module','title','http_method','url','data','expected']].to_dict()
  test_data.append(row_data)
print("最终获取到的数据是:{0}".format(test_data))

最后得到的结果是:

最终获取到的数据是:
[{'title': '正常登录', 'case_id': 1, 'data': '{"mobilephone":"18688773467","pwd":"123456"}'},
{'title': '输入错误的密码', 'case_id': 2, 'data': '{"mobilephone":"18688773467","pwd":"12345678"}'},
{'title': '正常充值', 'case_id': 3, 'data': '{"mobilephone":"18688773467","amount":"1000"}'},
{'title': '充值输入负数', 'case_id': 4, 'data': '{"mobilephone":"18688773467","amount":"-100"}'}]

关于pandas的学习,今天就告一段落啦!赶紧打开pycharm跑起来!!!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python对字典进行排序实例
Sep 25 Python
Django查找网站项目根目录和对正则表达式的支持
Jul 15 Python
在Linux系统上通过uWSGI配置Nginx+Python环境的教程
Dec 25 Python
用Python写冒泡排序代码
Apr 12 Python
深入浅析python定时杀进程
Jun 06 Python
查看django执行的sql语句及消耗时间的两种方法
May 29 Python
简单了解python的一些位运算技巧
Jul 13 Python
Python 闭包,函数分隔作用域,nonlocal声明非局部变量操作示例
Oct 14 Python
Python自动化完成tb喵币任务的操作方法
Oct 30 Python
Python高级编程之消息队列(Queue)与进程池(Pool)实例详解
Nov 01 Python
python 连续不等式语法糖实例
Apr 15 Python
升级keras解决load_weights()中的未定义skip_mismatch关键字问题
Jun 12 Python
PyQt5固定窗口大小的方法
Jun 18 #Python
Python格式化字符串f-string概览(小结)
Jun 18 #Python
Python 安装第三方库 pip install 安装慢安装不上的解决办法
Jun 18 #Python
PyQt编程之如何在屏幕中央显示窗体的实例
Jun 18 #Python
pycharm访问mysql数据库的方法步骤
Jun 18 #Python
python实现五子棋人机对战游戏
Mar 25 #Python
PyCharm 创建指定版本的 Django(超详图解教程)
Jun 18 #Python
You might like
ThinkPHP利用PHPMailer实现邮件发送实现代码
2013/09/26 PHP
ThinkPHP跳转页success及error模板实例教程
2014/07/17 PHP
PHP编写文件多服务器同步程序
2016/07/02 PHP
PHP实现页面静态化深入讲解
2021/03/04 PHP
html页面显示年月日时分秒和星期几的两种方式
2013/08/20 Javascript
javascript教程之不完整的继承(js原型链)
2014/01/13 Javascript
Jquery效果大全之制作电脑健康体检得分特效附源码下载
2015/11/02 Javascript
AngularJS入门教程之AngularJS表达式
2016/04/18 Javascript
详解JS中的立即执行函数
2017/02/24 Javascript
Vue2.0基于vue-cli+webpack同级组件之间的通信教程(推荐)
2017/09/14 Javascript
了解ESlint和其相关操作小结
2018/05/21 Javascript
vue自定义指令实现方法详解
2019/02/11 Javascript
Vue源码之关于vm.$delete()/Vue.use()内部原理详解
2019/05/01 Javascript
详解JavaScript中的Object.is()与"==="运算符总结
2020/06/17 Javascript
探索浏览器页面关闭window.close()的使用详解
2020/08/21 Javascript
python获取网页状态码示例
2014/03/30 Python
Python入门篇之函数
2014/10/20 Python
Python实现单词拼写检查
2015/04/25 Python
对python中UDP,socket的使用详解
2019/08/22 Python
python遍历文件目录、批量处理同类文件
2019/08/31 Python
Pandas实现DataFrame按行求百分数(比例数)
2019/12/27 Python
django3.02模板中的超链接配置实例代码
2020/02/04 Python
python爬虫线程池案例详解(梨视频短视频爬取)
2021/02/20 Python
利用css3径向渐变做一张优惠券的示例
2018/03/22 HTML / CSS
ParcelABC西班牙:包裹运送和快递服务
2019/12/24 全球购物
专科文秘应届生求职信
2013/11/18 职场文书
优秀少先队大队辅导员事迹材料
2014/05/04 职场文书
提拔干部考察材料
2014/05/26 职场文书
会计专业自荐信
2014/06/03 职场文书
运动会搞笑广播稿
2014/10/14 职场文书
2014年后勤工作总结
2014/11/18 职场文书
2014矛盾纠纷排查调处工作总结
2014/12/09 职场文书
2014流动人口计划生育工作总结
2014/12/20 职场文书
2015年助残日活动总结
2015/03/27 职场文书
房地产公司工程部经理岗位职责
2015/04/09 职场文书
MySQL 时间类型的选择
2021/06/05 MySQL