我不太推薦Python直接操作Excel,除非是經常需要使用Excel製作報表等需求。我更推薦的是csv文件格式。

csv文件格式是一種文本文件,按照特定格式讀寫內容,就可以方便的與Excel交換數據。即Excel可以生成csv,也可以讀入csv。csv文件只包含表格化的數據,不含有格式。所以常用的玩法是Python生成csv文件,由Excel讀入後,人工調整一下格式並交付。

Python里的csv模塊是標準庫里的,無需安裝第三方模塊即可使用。使用起來也是很方便。


舉個手,我有。用Python來處理表格,簡直讓你的工作快的不要不要的,之前給一個干財務的小姑娘做過,一天的活一小時搞定。她簡直對我膜拜啊,真是學習是人變帥啊(手動狗頭),教程截圖就在下面,(隨便贊下更好,哈哈哈。)

很多同學看了這個教程表示有一些難度,可能是大家Python基礎知識沒學習的事,所以推薦大家可以去學學Python,Python可以不光讓你與Excel結合,學習後你可以用做其他地方。隨便還能考個二級證書,豈不美滋滋。之前,我學習的時候看過不少課程,我跟著線上課程學的,我感覺夜曲編程的網上課程不錯,主要可以利用閑散時間學習,對於我沒有整個時間的來說比較友好,內容比較細緻,從純??的?度出發,把所有的基本概念?動的形容進?描述,利於0基礎同學理解,獨創卡?式學習+概念隱喻,通過?動的圖?+隱喻的?式,讓複雜的編程概念變得?常簡單,容易理解,而且學習完還有課後鞏固。

學習Python一方面讓自己有個新技能 增強競爭力 一方面順便也學學計算機二級的知識,夜曲編程有一些免費課大家可以去學學,掌握一些基礎知識。


最近迷上了高效處理數據的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("獲取到所有的值:
{0}".format(data))#格式化輸出

得到的結果是一個二維矩陣,如下所示:

#方法二:通過指定表單名的方式來讀取
df=pd.read_excel(lemon.xlsx,sheet_name=student)#可以通過sheet_name來指定讀取的表單
data=df.head()#默認讀取前5行的數據
print("獲取到所有的值:
{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("獲取到所有的值:
{0}".format(data))#格式化輸出

具體結果是怎樣的,同學們可以自己一個一個的去嘗試,這個結果是非常有意思的,但是同時同學們也發現了,這個數據是一個二維矩陣,對於我們去做自動化測試,並不能很順利的處理,所以接下來,我們就會詳細的講解,如何來讀取行號和列號以及每一行的內容 以及制定行列的內容。

三、pandas操作Excel的行列

1:讀取指定的單行,數據會存在列表裡面

#1:讀取指定行
df=pd.read_excel(lemon.xlsx)#這個會直接默認讀取到這個Excel的第一個表單
data=df.ix[0].values#0表示第一行 這裡讀取數據並不包含表頭,要注意哦!
print("讀取指定行的數據:
{0}".format(data))

得到的結果如下所示:

2:讀取指定的多行,數據會存在嵌套的列表裡面:

df=pd.read_excel(lemon.xlsx)
data=df.ix[[1,2]].values#讀取指定多行的話,就要在ix[]裡面嵌套列表指定行數
print("讀取指定行的數據:
{0}".format(data))

3:讀取指定的行列:

df=pd.read_excel(lemon.xlsx)
data=df.ix[1,2]#讀取第一行第二列的值,這裡不需要嵌套列表
print("讀取指定行的數據:
{0}".format(data))

4:讀取指定的多行多列值:

df=pd.read_excel(lemon.xlsx)
data=df.ix[[1,2],[title,data]].values#讀取第一行第二行的title以及data列的值,這裡需要嵌套列表
print("讀取指定行的數據:
{0}".format(data))

5:獲取所有行的指定列

df=pd.read_excel(lemon.xlsx)
data=df.ix[:,[title,data]].values#讀所有行的title以及data列的值,這裡需要嵌套列表
print("讀取指定行的數據:
{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("輸出值
",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跑起來!!!

除了本文,我準備了 《python自動化處理excel的學習視頻》,想學習的同學評論區留言哈~

希望以上的回答對你有用!

作者:華妹陀

來源:博客園

發佈於 2020-01-06繼續瀏覽內容知乎發現更大的世界打開Chrome繼續豌豆花下貓豌豆花下貓文理雙修,一手寫代碼:Python貓,一手寫文學:豌豆花

正巧上周的 PyCoders Weekly 推了一篇教程,Real Python 出品。

使用 openpyxl 操作 excel

A Guide to Excel Spreadsheets in Python With openpyxl – Real Python?

realpython.com圖標

正巧上周的 PyCoders Weekly 推了一篇教程,Real Python 出品。

使用 openpyxl 操作 excel

A Guide to Excel Spreadsheets in Python With openpyxl – Real Python?

realpython.com圖標

推薦閱讀:
相关文章