python处理excel
一、安装
1:pandas依赖处理Excel的xlrd模块,安装命令是:pip install xlrd
2:安装pandas模块还需要一定的编码环境,所以我们自己在安装的时候,确保你的电脑有这些环境:Net.4 、VC-Compiler以及winsdk_web
3:步骤1和2 准备好了之后,安装pandas,安装命令是:pip install pandas
二、pandas操作Excel表单
数据准备:文件名test_pandas.xlsx
image.png
image.png
1:引入模块
import pandas as pd
2:读取Excel文件的两种方式:
方法一:默认读取第一个表单
import pandas as pddf=pd.read_excel('test_pandas.xlsx')#这个会直接默认读取到这个Excel的第一个表单data=df.head()#默认读取前5行的数据pd.set_option('display.width',None) #中间不用省略号展示print('获取到所有的值:\n{0}'.format(data))#格式化输出
输出:
获取到所有的值: case_id title url data0 1 正常登陆 https://www.lixinchuxing.com/url1.html {'uname':'uname1','pwd':'pwd1'}1 2 查询车辆 https://www.lixinchuxing.com/url2.html {'uname':'uname2','pwd':'pwd2'}2 3 获取详情 https://www.lixinchuxing.com/url3.html {'uname':'uname3','pwd':'pwd3'}3 4 修改配置 https://www.lixinchuxing.com/url4.html {'uname':'uname4','pwd':'pwd4'}
方法二:通过指定表单名的方式来读取
df=pd.read_excel('lemon.xlsx',sheet_name='student')#可以通过sheet_name来指定读取的表单#获取所有数据(不包含第一行)print('获取到所有的值:\n{0}'.format(data))#格式化输出
输出
获取到所有的值:获取到所有的值:[[1 '张三' 88 88 88 88] [2 '李四' 77 77 77 77] [3 '王五' 66 66 66 66] [4 '赵六' 55 55 55 55]]
三、pandas操作Excel的行列
1:读取指定的单行,数据会存在列表里面
df=pd.read_excel('test_pandas.xlsx')#这个会直接默认读取到这个Excel的第一个表单data=df.iloc[0].values#0表示第一行 这里读取数据并不包含表头print('读取指定行的数据:\n{0}'.format(data))
输出
读取指定行的数据:[1 '正常登陆' 'https://www.lixinchuxing.com/url1.html' '{'uname':'uname1','pwd':'pwd1'}']
2:读取指定的多行,数据会存在嵌套的列表里面:
df=pd.read_excel('test_pandas.xlsx')data=df.iloc[[1,2]].values#读取指定多行的话,就要在ix[]里面嵌套列表指定行数print('读取指定行的数据:\n{0}'.format(data))
输出
读取指定行的数据:[[2 '查询车辆' 'https://www.lixinchuxing.com/url2.html' '{'uname':'uname2','pwd':'pwd2'}'] [3 '获取详情' 'https://www.lixinchuxing.com/url3.html' '{'uname':'uname3','pwd':'pwd3'}']]
3:读取指定的行的指定列的数据:
df=pd.read_excel('test_pandas.xlsx')data=df.iloc[0,1]#读取第一行第二列的值(不算表头),这里不需要嵌套列表print('读取指定行的数据:\n{0}'.format(data))
输出
读取指定行的数据:正常登陆
4:读取指定的多行多列值:
4.1
iloc 为按位置对列索引,使用的是 [[行号], [列号]]
df=pd.read_excel('test_pandas.xlsx')data=df.iloc[[0,1],[2,3]]#读取第一行第二行(不算表头),第3、4的值print('读取指定行的数据:\n{0}'.format(data))
4.2
loc为按列名索引,使用的是 [[行号], [列名]]
df=pd.read_excel('test_pandas.xlsx')data=df.loc[[0,1],['title','url']].values#读取第一行第二行(不算表头),第3、4的值print('读取指定行的数据:\n{0}'.format(data))
输出同样为:
[['https://www.lixinchuxing.com/url1.html' '{'uname':'uname1','pwd':'pwd1'}'] ['https://www.lixinchuxing.com/url2.html' '{'uname':'uname2','pwd':'pwd2'}']]
5:获取所有行的指定列
df=pd.read_excel('test_pandas.xlsx')data=df.iloc[:,[1,2]].values#所有行的第2、3列第三列的值print('读取指定行的数据:\n{0}'.format(data))
6:获取行号并打印输出
df=pd.read_excel('test_pandas.xlsx')print('输出行号列表',df.index.values)# 输出结果是: 输出行号列表 [0 1 2 3]
7:获取列名并打印输出
df=pd.read_excel('test_pandas.xlsx')print('输出列标题',df.columns.values)# 输出结果是:输出列标题 ['case_id' 'title' 'url' 'data']
8:获取指定列的值:
print('输出值\n',df['data'].values)# 输出结果是:输出值 ['{'uname':'uname1','pwd':'pwd1'}' '{'uname':'uname2','pwd':'pwd2'}' '{'uname':'uname3','pwd':'pwd3'}' '{'uname':'uname4','pwd':'pwd4'}']
9:获取文件中的表单
reader = pd.ExcelFile('test_pandas.xlsx')sheet_names = reader.sheet_namesprint(sheet_names)#输出结果['testcase', 'score']
四:pandas处理Excel数据成为字典
我们日常做接口自动化时,所需要的数据格式并非二维数组,而是表头作为key,每一行数据作为value的嵌套字典的列表,每一行的数据作为一个测试用例,用一个字典表达,多行组成一个列表。
下面方法可以将excel中的数据转化为我们需要的数据格式。
import pandas as pddf=pd.read_excel('test_pandas.xlsx')test_data=[]#获取表头keys = df.columns.valuesfor i in df.index.values:#获取行号的索引,并对其进行遍历: # 根据i来获取每一行指定的数据 并利用to_dict转成字典,# loc为按列名索引 iloc 为按位置索引,使用的是 [[行号], [列名]] row_data=df.loc[i,keys].to_dict() # 将每一行转换成字典后添加到列表 test_data.append(row_data)print('最终获取到的数据是:\n{0}'.format(test_data))
输出结果
最终获取到的数据是:[{'case_id': 1, 'title': '正常登陆', 'url': 'https://www.lixinchuxing.com/url1.html', 'data': '{'uname':'uname1','pwd':'pwd1'}'}, {'case_id': 2, 'title': '查询车辆', 'url': 'https://www.lixinchuxing.com/url2.html', 'data': '{'uname':'uname2','pwd':'pwd2'}'}, {'case_id': 3, 'title': '获取详情', 'url': 'https://www.lixinchuxing.com/url3.html', 'data': '{'uname':'uname3','pwd':'pwd3'}'}, {'case_id': 4, 'title': '修改配置', 'url': 'https://www.lixinchuxing.com/url4.html', 'data': '{'uname':'uname4','pwd':'pwd4'}'}]
赞 (0)