一、安裝
1:pandas依賴處理Excel的xlrd模塊,安裝命令是:pip install xlrd
2:安裝pandas模塊還需要一定的編碼環(huán)境晾剖,所以我們自己在安裝的時候兰珍,確保你的電腦有這些環(huán)境: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 pd
df=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 data
0 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_names
print(sheet_names)
#輸出結果
['testcase', 'score']
四:pandas處理Excel數據成為字典
我們日常做接口自動化時砚偶,所需要的數據格式并非二維數組,而是表頭作為key洒闸,每一行數據作為value的嵌套字典的列表染坯,每一行的數據作為一個測試用例,用一個字典表達丘逸,多行組成一個列表单鹿。
下面方法可以將excel中的數據轉化為我們需要的數據格式。
import pandas as pd
df=pd.read_excel('test_pandas.xlsx')
test_data=[]
#獲取表頭
keys = df.columns.values
for 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"}'}]