博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python利用pandas处理Excel数据的应用
阅读量:6089 次
发布时间:2019-06-20

本文共 3731 字,大约阅读时间需要 12 分钟。

hot3.png

       最近迷上了高效处理数据的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的表单数据如下所示:

 

student的表单数据如下所示:

 

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

import  pandas  as pd

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

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

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

 

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

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

复制代码

#方法三:通过表单索引来指定要访问的表单,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))

得到的结果如下所示:

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数据成为字典

 我们有这样的数据,,处理成列表嵌套字典,且字典的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跑起来!!!

转载于:https://my.oschina.net/u/3878260/blog/2878935

你可能感兴趣的文章
R 语言assign 和get 函数用法
查看>>
cesium之核心类Viewer简介篇
查看>>
ALSA声卡驱动中的DAPM详解之六:精髓所在,牵一发而动全身
查看>>
libev与libuv的区别
查看>>
iOS 为什么使用xcode8上传app包到appStore无法构建版本
查看>>
CentOS7运行Tomcat8时启动慢,访问总是转圈,但是过一会又好了
查看>>
(转) K-Means聚类的Python实践
查看>>
Tomcat优化步骤【转】
查看>>
CRC 自动判断大端 小端
查看>>
原来这样可以轻松恢复回收站删除文件
查看>>
DisparityCostVolumeEstimator.cpp
查看>>
(转)git中关于fetch的使用
查看>>
mongo DB for C#
查看>>
caffe整体框架的学习的博客,这个博客山寨了一个caffe框架
查看>>
git只拉取github部分代码的方法
查看>>
laravel 踩坑 env,config
查看>>
值得学习的技术人——阮一峰
查看>>
Oracle 游标使用全解
查看>>
js插件---layer.js使用体验是怎样
查看>>
如何把SQL Server中一个表,一个存储过程,一个视图等改为系统表,系统存储过程,系统视图等...
查看>>