python處理excel--pandas

一、安裝

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"}'}]
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市囤萤,隨后出現的幾起案子昼窗,更是在濱河造成了極大的恐慌,老刑警劉巖涛舍,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件澄惊,死亡現場離奇詭異,居然都是意外死亡富雅,警方通過查閱死者的電腦和手機掸驱,發(fā)現死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來没佑,“玉大人毕贼,你說我怎么就攤上這事「蛏荩” “怎么了鬼癣?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵陶贼,是天一觀的道長。 經常有香客問我待秃,道長拜秧,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任章郁,我火速辦了婚禮枉氮,結果婚禮上,老公的妹妹穿的比我還像新娘暖庄。我一直安慰自己聊替,他們只是感情好,可當我...
    茶點故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布培廓。 她就那樣靜靜地躺著佃牛,像睡著了一般。 火紅的嫁衣襯著肌膚如雪医舆。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天象缀,我揣著相機與錄音蔬将,去河邊找鬼。 笑死央星,一個胖子當著我的面吹牛霞怀,可吹牛的內容都是我干的。 我是一名探鬼主播莉给,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼毙石,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了颓遏?” 一聲冷哼從身側響起徐矩,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎叁幢,沒想到半個月后滤灯,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡曼玩,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年鳞骤,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片黍判。...
    茶點故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡豫尽,死狀恐怖,靈堂內的尸體忽然破棺而出顷帖,到底是詐尸還是另有隱情美旧,我是刑警寧澤渤滞,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站陈症,受9級特大地震影響蔼水,放射性物質發(fā)生泄漏。R本人自食惡果不足惜录肯,卻給世界環(huán)境...
    茶點故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一趴腋、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧论咏,春花似錦优炬、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至养涮,卻和暖如春葵硕,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背贯吓。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工懈凹, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人悄谐。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓介评,卻偏偏與公主長得像魁亦,于是被迫代替她去往敵國和親斯议。 傳聞我的和親對象是個殘疾皇子滔吠,可洞房花燭夜當晚...
    茶點故事閱讀 44,779評論 2 354

推薦閱讀更多精彩內容