天天看點

Python讀取Excel檔案并寫入資料庫Python利用pandas處理Excel資料的應用

好方法

Python利用pandas處理Excel資料的應用

最近迷上了高效處理資料的pandas,其實這個是用來做資料分析的,如果你是做大資料分析和測試的,那麼這個是非常的有用的!!但是其實我們平時在做自動化測試的時候,如果涉及到資料的讀取和存儲,那麼而利用pandas就會非常高效,基本上3行代碼可以搞定你20行代碼的操作!該教程僅僅限于結合檸檬班的全棧自動化測試課程來講解下pandas在項目中的應用,這僅僅隻是冰山一角,希望大家可以踴躍的去嘗試和探索!           

複制

一、安裝環境:

[

複制代碼

](javascript:void(0); "複制代碼")

<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;"> 1:pandas依賴處理Excel的xlrd子產品,是以我們需要提前安裝這個,安裝指令是:pip install xlrd 2:安裝pandas子產品還需要一定的編碼環境,是以我們自己在安裝的時候,確定你的電腦有這些環境:Net.4 、VC-Compiler以及winsdk_web,如果大家沒有這些軟體~可以咨詢我們的輔導員索要相關安裝工具。 3:步驟1和2 準備好了之後,我們就可以開始安裝pandas了,安裝指令是:pip install pandas

一切準備就緒,就可以開始愉快的玩耍咯!

ps:在這個過程中,可能會遇到安裝不順利的情況,萬能的度娘有N種解決方案,你這麼大應該要學着自己解決問題。</pre>

[

複制代碼

](javascript:void(0); "複制代碼")

二、pandas操作Excel表單           

複制

資料準備,有一個Excel檔案:lemon.xlsx有兩個表單,表單名分别為:Python 以及student,

Python的表單資料如下所示:

Python讀取Excel檔案并寫入資料庫Python利用pandas處理Excel資料的應用

image

student的表單資料如下所示:

Python讀取Excel檔案并寫入資料庫Python利用pandas處理Excel資料的應用

image

1:在利用pandas子產品進行操作前,可以先引入這個子產品,如下:

  2:讀取Excel檔案的兩種方式:           

複制

方法一:預設讀取第一個表單

df=pd.read_excel('lemon.xlsx')#這個會直接預設讀取到這個Excel的第一個表單

data=df.head()#預設讀取前5行的資料

print("擷取到所有的值:\n{0}".format(data))#格式化輸出</pre>

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

Python讀取Excel檔案并寫入資料庫Python利用pandas處理Excel資料的應用

image

<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">#方法二:通過指定表單名的方式來讀取

df=pd.read_excel('lemon.xlsx',sheet_name='student')#可以通過sheet_name來指定讀取的表單

data=df.head()#預設讀取前5行的資料

print("擷取到所有的值:\n{0}".format(data))#格式化輸出</pre>

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

Python讀取Excel檔案并寫入資料庫Python利用pandas處理Excel資料的應用

image

[

複制代碼

](javascript:void(0); "複制代碼")

<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">#方法三:通過表單索引來指定要通路的表單,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))#格式化輸出</pre>

[

複制代碼

](javascript:void(0); "複制代碼")

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

三、pandas操作Excel的行列

1:讀取指定的單行,資料會存在清單裡面

<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">#1:讀取指定行

df=pd.read_excel('lemon.xlsx')#這個會直接預設讀取到這個Excel的第一個表單

data=df.ix[0].values#0表示第一行 這裡讀取資料并不包含表頭,要注意哦!

print("讀取指定行的資料:\n{0}".format(data))</pre>

得到的結果如下所示:

Python讀取Excel檔案并寫入資料庫Python利用pandas處理Excel資料的應用

image

2:讀取指定的多行,資料會存在嵌套的清單裡面:

<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">df=pd.read_excel('lemon.xlsx')

data=df.ix[[1,2]].values#讀取指定多行的話,就要在ix[]裡面嵌套清單指定行數

print("讀取指定行的資料:\n{0}".format(data))</pre>

3:讀取指定的行列:

<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">df=pd.read_excel('lemon.xlsx')

data=df.ix[1,2]#讀取第一行第二列的值,這裡不需要嵌套清單 print("讀取指定行的資料:\n{0}".format(data))</pre>

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

<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">df=pd.read_excel('lemon.xlsx')

data=df.ix[[1,2],['title','data']].values#讀取第一行第二行的title以及data列的值,這裡需要嵌套清單 print("讀取指定行的資料:\n{0}".format(data))</pre>

5:擷取所有行的指定列

<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">df=pd.read_excel('lemon.xlsx')

data=df.ix[:,['title','data']].values#讀所有行的title以及data列的值,這裡需要嵌套清單 print("讀取指定行的資料:\n{0}".format(data))</pre>

6:擷取行号并列印輸出

<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">df=pd.read_excel('lemon.xlsx') print("輸出行号清單",df.index.values)

輸出結果是:

輸出行号清單 [0 1 2 3]</pre>

7:擷取列名并列印輸出

<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">df=pd.read_excel('lemon.xlsx') print("輸出列标題",df.columns.values)

運作結果如下所示:

輸出列标題 ['case_id' 'title' 'data']</pre>

8:擷取指定行數的值:

[

複制代碼

](javascript:void(0); "複制代碼")

<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">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"}']]</pre>

[

複制代碼

](javascript:void(0); "複制代碼")

9:擷取指定列的值:

<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">df=pd.read_excel('lemon.xlsx') print("輸出值\n",df['data'].values)</pre>

四:pandas處理Excel資料成為字典

我們有這樣的資料,

Python讀取Excel檔案并寫入資料庫Python利用pandas處理Excel資料的應用

image

,處理成清單嵌套字典,且字典的key為表頭名。

實作的代碼如下所示:

[

複制代碼

](javascript:void(0); "複制代碼")

<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">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))</pre>

[

複制代碼

](javascript:void(0); "複制代碼")

最後得到的結果是:

<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">最終擷取到的資料是:

[{'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"}'}]</pre>

關于pandas的學習,今天就告一段落啦!趕緊打開pycharm跑起來!!!

import pandas as pd

from sqlalchemy import create_engine

file = r"line6.xlsx"

df = pd.read_excel(file)

print(df)

engine = create_engine("mysql+pymysql://root:[email protected]:3306/excel?charset=utf8")

df.to_sql('testexcel',con=engine,if_exists='replace',index=False)