python处理excel--pandas

一、安装

1:pandas依赖处理Excel的xlrd模块,安装命令是:pip install xlrd
2:安装pandas模块还需要一定的编码环境,所以我们自己在安装的时候,确保你的电脑有这些环境: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"}'}]
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,214评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,307评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,543评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,221评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,224评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,007评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,313评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,956评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,441评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,925评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,018评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,685评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,234评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,240评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,464评论 1 261
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,467评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,762评论 2 345

推荐阅读更多精彩内容