Python利用pandas处理Excel数据的应用详解


Posted in Python onJune 18, 2019

最近迷上了高效处理数据的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的表单数据如下所示:

Python利用pandas处理Excel数据的应用详解

student的表单数据如下所示:

Python利用pandas处理Excel数据的应用详解

1:在利用pandas模块进行操作前,可以先引入这个模块,如下:

import pandas as pd

2:读取Excel文件的两种方式:

#方法一:默认读取第一个表单
df=pd.read_excel('lemon.xlsx')#这个会直接默认读取到这个Excel的第一个表单
data=df.head()#默认读取前5行的数据
print("获取到所有的值:\n{0}".format(data))#格式化输出

得到的结果是一个二维矩阵,如下所示:

Python利用pandas处理Excel数据的应用详解

#方法二:通过指定表单名的方式来读取
df=pd.read_excel('lemon.xlsx',sheet_name='student')#可以通过sheet_name来指定读取的表单
data=df.head()#默认读取前5行的数据
print("获取到所有的值:\n{0}".format(data))#格式化输出

得到的结果如下所示,也是一个二维矩阵:

Python利用pandas处理Excel数据的应用详解

#方法三:通过表单索引来指定要访问的表单,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))#格式化输出

具体结果是怎样的,同学们可以自己一个一个的去尝试,这个结果是非常有意思的,但是同时同学们也发现了,这个数据是一个二维矩阵,对于我们去做自动化测试,并不能很顺利的处理,所以接下来,我们就会详细的讲解,如何来读取行号和列号以及每一行的内容 以及制定行列的内容。

三、pandas操作Excel的行列

1:读取指定的单行,数据会存在列表里面

#1:读取指定行
df=pd.read_excel('lemon.xlsx')#这个会直接默认读取到这个Excel的第一个表单
data=df.ix[0].values#0表示第一行 这里读取数据并不包含表头,要注意哦!
print("读取指定行的数据:\n{0}".format(data))

得到的结果如下所示:

Python利用pandas处理Excel数据的应用详解

2:读取指定的多行,数据会存在嵌套的列表里面:

df=pd.read_excel('lemon.xlsx')
data=df.ix[[1,2]].values#读取指定多行的话,就要在ix[]里面嵌套列表指定行数
print("读取指定行的数据:\n{0}".format(data))

3:读取指定的行列:

df=pd.read_excel('lemon.xlsx')
data=df.ix[1,2]#读取第一行第二列的值,这里不需要嵌套列表
print("读取指定行的数据:\n{0}".format(data))

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

df=pd.read_excel('lemon.xlsx')
data=df.ix[[1,2],['title','data']].values#读取第一行第二行的title以及data列的值,这里需要嵌套列表
print("读取指定行的数据:\n{0}".format(data))

5:获取所有行的指定列

df=pd.read_excel('lemon.xlsx')
data=df.ix[:,['title','data']].values#读所有行的title以及data列的值,这里需要嵌套列表
print("读取指定行的数据:\n{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("输出值\n",df['data'].values)

四:pandas处理Excel数据成为字典

我们有这样的数据,Python利用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 相关文章推荐
跟老齐学Python之一个免费的实验室
Sep 14 Python
python打开网页和暂停实例
Sep 30 Python
Python的Django框架中的select_related函数对QuerySet 查询的优化
Apr 01 Python
python3实现UDP协议的服务器和客户端
Jun 14 Python
python中logging包的使用总结
Feb 28 Python
基于python实现学生管理系统
Oct 17 Python
python实现简易数码时钟
Feb 19 Python
python 获取url中的参数列表实例
Dec 18 Python
Python多图片合并PDF的方法
Jan 03 Python
Python多进程编程常用方法解析
Mar 26 Python
Python 列表中的修改、添加和删除元素的实现
Jun 11 Python
Idea安装python显示无SDK问题解决方案
Aug 12 Python
PyQt5固定窗口大小的方法
Jun 18 #Python
Python格式化字符串f-string概览(小结)
Jun 18 #Python
Python 安装第三方库 pip install 安装慢安装不上的解决办法
Jun 18 #Python
PyQt编程之如何在屏幕中央显示窗体的实例
Jun 18 #Python
pycharm访问mysql数据库的方法步骤
Jun 18 #Python
python实现五子棋人机对战游戏
Mar 25 #Python
PyCharm 创建指定版本的 Django(超详图解教程)
Jun 18 #Python
You might like
PHPMailer安装方法及简单实例
2008/11/25 PHP
CodeIgniter框架中_remap()使用方法2例
2014/03/10 PHP
php使用PDO方法详解
2014/12/27 PHP
PHP+MySQL删除操作实例
2015/01/21 PHP
php redis实现对200w用户的即时推送
2017/03/04 PHP
PHP实现根据数组某个键值大小进行排序的方法
2018/03/13 PHP
Google Map API更新实现用户自定义标注坐标
2009/07/29 Javascript
javascript 24小时弹出一次的代码(利用cookies)
2009/09/03 Javascript
jQuery Flash/MP3/Video多媒体插件
2010/01/18 Javascript
window.location.hash 属性使用说明
2010/03/20 Javascript
纯js实现瀑布流展现照片(自动适应窗口大小)
2013/04/08 Javascript
jQuery 中DOM 操作详解
2015/01/13 Javascript
javascript中关于&& 和 || 表达式的小技巧分享
2015/04/10 Javascript
移动端效果之IndexList详解
2017/10/20 Javascript
vue2.0之多页面的开发的示例
2018/01/30 Javascript
vue的toast弹窗组件实例详解
2018/05/14 Javascript
微信小程序判断用户是否需要再次授权获取个人信息
2019/07/18 Javascript
JS实现炫酷轮播图
2020/11/15 Javascript
Python入门篇之正则表达式
2014/10/20 Python
Python数据结构与算法之链表定义与用法实例详解【单链表、循环链表】
2017/09/28 Python
NumPy 数组使用大全
2019/04/25 Python
python-OpenCV 实现将数组转换成灰度图和彩图
2020/01/09 Python
Python安装whl文件过程图解
2020/02/18 Python
如何表示python中的相对路径
2020/07/08 Python
HTML5网页音乐播放器的示例代码
2017/11/09 HTML / CSS
日本乐天德国站:Rakuten.de
2019/05/16 全球购物
英国家具、照明、家居用品网上商店:Wayfair.co.uk
2020/02/13 全球购物
Unix如何在一行中运行多个命令
2015/05/29 面试题
旅游安全协议书
2014/04/21 职场文书
地质灾害防治方案
2014/05/14 职场文书
信息工作经验交流材料
2014/05/28 职场文书
乡村教师党员四风问题对照检查材料思想汇报
2014/10/08 职场文书
2015年科研工作总结范文
2015/05/13 职场文书
2015秋季运动会通讯稿
2015/07/18 职场文书
医德医风学习心得体会
2016/01/25 职场文书
MySQL添加索引特点及优化问题
2022/07/23 MySQL