Python如何处理Excel中的数据
发布时间:2025-02-10 13:33:41

一、安装pandas:
1.安装pandas其实很简单。pandas依赖于处理excel的xlrd模块,因此我们需要提前安装此模块。安装命令如下:pip install xlrd
2.开始安装pandas,安装命令是:pip install pandas
二、读取excel文件
webservice_testcase.xlsx结构如下:

1.首先,我们应该首先导入这个模块
importpandasaspd
2.读取表格中的数据:
sheet=pd.read_excel('test_data\\webservice_testcase.xlsx')#这将直接默认读取Excel的第一个表单
data=sheet.head()#默认读取前5行数据
print("获得所有值:\n{0}".format(data))#格式化输出 3.数据也可以通过指定的表单名读取
sheet=pd.read_excel('test_data\\webservice_testcase.xlsx',sheet_name='userRegister')
data=sheet.head()#默认读取前5行数据
print("获得所有值:\n{0}".format(data))#格式化输出4.指定要访问的表单通过表单索引,0表示第一个表单,也可以用表单名和索引的双重方式定位表单,也可以同时定位多个表单,如下所示
sheet=pd.read_excel('test_data\\webservice_testcase.xlsx',sheet_name=['sendMCode','userRegister'])#同时可以通过表单名指定多个
#sheet=pd.read_excel('test_data\\webservice_testcase.xlsx',sheet_name=0)#可以通过表单索引指定读取的表单
#sheet=pd.read_excel('test_data\\webservice_testcase.xlsx',sheet_name=['sendMCode',1]#可以通过混合来指定
#sheet=pd.read_excel('test_data\\webservice_testcase.xlsx',sheet_name=[1,2]#可以通过索引同时指定多个
data=sheet.values#要获取所有数据,请注意不要在这里使用head()方法
print("获得所有值:\n{0}".format(data))#格式化输出二、操作Excel中的行列
1.读取制定的一行数据:
sheet=pd.read_excel('webservice_testcase.xlsx')#这将直接默认读取Excel的第一个表单
data=sheet.ix[0].values#这里读取的数据意味着第一行不包括表头
print("读取指定行的数据:\n{0}".format(data))结果如下:

2.读取指定的多行:
sheet=pd.read_excel('test_data\\webservice_testcase.xlsx')#这将直接默认读取Excel的第一个表单
data=sheet.ix[[0,1]].values#这里读取的数据意味着第一行不包括表头
print("读取指定行的数据:\n{0}".format(data))结果如下:

3.读取指定行列的数据:
sheet=pd.read_excel('test_data\\webservice_testcase.xlsx')#这将直接默认读取Excel的第一个表单
data=sheet.ix[0,1]#读取第一行第二列的值
print("读取指定行的数据:\n{0}".format(data))结果如下:

4.读取指定的多行多列值:
sheet=pd.read_excel('test_data\\webservice_testcase.xlsx')
data=sheet.ix[1,2]['method','description']].values#读取第二行第三行的method和description列的值,这里需要嵌套列表
print("读取指定行的数据:\n{0}".format(data))结果如下:

5.读取所有行指定的列值:
sheet=pd.read_excel('test_data\\webservice_testcase.xlsx')
data=sheet.ix[:,['method','description']].values#读取第二行第三行的method和description列的值,这里需要嵌套列表
print("读取指定行的数据:\n{0}".format(data))结果如下:

6.获取行号输出:
sheet=pd.read_excel('test_data\\webservice_testcase.xlsx')
print("输出行号列表",sheet.index.values)得出以下结果:

7.获取列名输出:
sheet=pd.read_excel('test_data\\webservice_testcase.xlsx')
print("输出列标题",sheet.columns.values)结果如下:

8.获取指定行数的值:
sheet=pd.read_excel('test_data\\webservice_testcase.xlsx')
print("输出值",sheet.sample(2).values)9.获取指定列的值
sheet=pd.read_excel('test_data\\webservice_testcase.xlsx')
print("输出值",sheet['description'].values)结果如下:

将excel中的每个数据处理成字典,然后让它成为一个列表
test_data=[] sheet=pd.read_excel(self.file_name,sheet_name=key) foriinsheet.index.values:#获取行号索引并遍历:#根据i获取每行指定的数据,并将to_dict转换为字典 row_data=sheet.ix[i,['id','method','description','url','param','ExpectedResult']].to_dict() test_data.append(row_data)
此外,我们可以在配置文件中写入与测试用例相关的内容,并根据配置文件中的内容进行读取:
配置文件如下:
[CASECONFIG]
sheet_list={'sendMCode':'all',
'userRegister':'all',
'verifyUserAuth':'all',
'bindBankCard':[]
} 处理配置文件.py代码如下:
importconfigparser classReadConfig: defread_config(self,file_path,section,option): cf=configparser.ConfigParser() cf.read(file_path,encoding="utf-8") value=cf.get(section,option) returnvalue
project_path.py代码如下:
importos Project_path=os.path.split(os.path.split(os.path.realpath(__file_)[0])[0] #配置文件路径 case_config_path=os.path.join(Project_path,'config','case.config') #测试用例的路径 test_cases_path=os.path.join(Project_path,'test_data','webservice_testcase.xlsx')
然后我们将读取excel的内容包装成一个类,代码示例如下:
fromcommonimportproject_pathfromcommon.read_configimportReadConfigasRC importpandasaspd classDoExcel: def__init__(self,file_name): self.file_name=file_name self.sheet_list=eval(RC().read_config(project_path.case_config_path,'CASECONFIG','sheet_list')) defdo_excel(self): test_data=[] forkeyinself.sheet_list: ifself.sheet_list[key]=='all':#读取所有用例 sheet=pd.read_excel(self.file_name,sheet_name=key) foriinsheet.index.values:#获取行号索引,并对其进行遍历: #根据i获取每行指定的数据,并将to_dict转换为字典 row_data=sheet.ix[i,['id','method','description','url','param','ExpectedResult']].to_dict() test_data.append(row_data) else: sheet=pd.read_excel(self.file_name,sheet_name=key) foriinself.sheet_list[key]:#根据list中的标号读取excel指定的用例 row_data=sheet.ix[i-1,['id','method','description','url','param','ExpectedResult']].to_dict() test_data.append(row_data) returntest_data if__name__='__main__': test_data=DoExcel(project_path.test_cases_path).do_excel() print(test_data)
若将配置改为以下内容:
[CASECONFIG]
sheet_list={'sendMCode':[1,3,5],
'userRegister':[],
'verifyUserAuth':[],
'bindBankCard':[]
} 我们将得到以下操作结果:
[{:1,:,:,:,:,:},
{:3,:,:,:,:,:},
{:5,:,:,:,:,:}]到此为止,将excel中的用例数据读取为[{key1:{key2:value2},...,{keyn:valuen}]这种形式已经完成,但还有很多事情需要改进,比如用例中完成参数的替换,测试完成后将测试数据写回excel对应的表格中等。
更多Python相关文章,请关注Python自学网。
下一篇 Python之了解pandas!
