Python利用pandas处理Excel数据的应用
最近迷上了高效处理数据的pandas,其实这个是用来作数据分析的,若是你是作大数据分析和测试的,那么这个是很是的有用的!!可是其实咱们平时在作自动化测试的时候,若是涉及到数据的读取和存储,那么而利用pandas就会很是高效,基本上3行代码能够搞定你20行代码的操做!该教程仅仅限于结合柠檬班的全栈自动化测试课程来说解下pandas在项目中的应用,这仅仅只是冰山一角,但愿你们能够踊跃的去尝试和探索!html
1、安装环境:
1:pandas依赖处理Excel的xlrd模块,因此咱们须要提早安装这个,安装命令是:pip install xlrd 2:安装pandas模块还须要必定的编码环境,因此咱们本身在安装的时候,确保你的电脑有这些环境:Net.4 、VC-Compiler以及winsdk_web,若是你们没有这些软件~能够咨询咱们的辅导员索要相关安装工具。 3:步骤1和2 准备好了以后,咱们就能够开始安装pandas了,安装命令是:pip install pandas 一切准备就绪,就能够开始愉快的玩耍咯! ps:在这个过程当中,可能会遇到安装不顺利的状况,万能的度娘有N种解决方案,你这么大应该要学着本身解决问题。
2、pandas操做Excel表单python
数据准备,有一个Excel文件:lemon.xlsx有两个表单,表单名分别为:Python 以及student,web
Python的表单数据以下所示:app
student的表单数据以下所示:工具
1:在利用pandas模块进行操做前,能够先引入这个模块,以下:post
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))#格式化输出
具体结果是怎样的,同窗们能够本身一个一个的去尝试,这个结果是很是有意思的,可是同时同窗们也发现了,这个数据是一个二维矩阵,对于咱们去作自动化测试,并不能很顺利的处理,因此接下来,咱们就会详细的讲解,如何来读取行号和列号以及每一行的内容 以及制定行列的内容。url
3、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"}'}]