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删除文件示例分享
Jan 28 Python
Python使用matplotlib实现基础绘图功能示例
Jul 03 Python
python中使用zip函数出现错误的原因
Sep 28 Python
python数据批量写入ScrolledText的优化方法
Oct 11 Python
python实现AES加密和解密
Mar 27 Python
pandas 数据结构之Series的使用方法
Jun 21 Python
Python DataFrame一列拆成多列以及一行拆成多行
Aug 06 Python
FFrpc python客户端lib使用解析
Aug 24 Python
python ctypes库2_指定参数类型和返回类型详解
Nov 19 Python
TensorFlow实现保存训练模型为pd文件并恢复
Feb 06 Python
PyQt5实现登录页面
May 30 Python
python eventlet绿化和patch原理
Nov 21 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
php关于array_multisort多维数组排序的使用说明
2011/01/04 PHP
用PHP读取和编写XML DOM的实现代码
2011/02/03 PHP
php获取当前时间的毫秒数的方法
2014/01/26 PHP
PHP使用PhpSpreadsheet操作Excel实例详解
2020/03/26 PHP
jQuery ajax cache缓存问题
2010/07/01 Javascript
菜鸟javascript基础资料整理3 正则
2010/12/06 Javascript
jQuery UI AutoComplete 使用说明
2011/06/20 Javascript
jQuery方法简洁实现隔行换色及toggleClass的使用
2013/03/15 Javascript
基于JavaScript实现 获取鼠标点击位置坐标的方法
2013/04/12 Javascript
js获取select标签的值且兼容IE与firefox
2013/12/30 Javascript
禁用Enter键表单自动提交实现代码
2014/05/22 Javascript
Nodejs爬虫进阶教程之异步并发控制
2016/02/15 NodeJs
原生JS实现平滑回到顶部组件
2016/03/16 Javascript
教你如何在Node.js中使用jQuery
2016/08/28 Javascript
从0开始学Vue
2016/10/27 Javascript
从零学习node.js之模块规范(一)
2017/02/21 Javascript
纯JS实现弹性导航条效果
2017/03/06 Javascript
简单实现jQuery手风琴效果
2017/08/18 jQuery
浅谈Node模块系统及其模式
2017/11/17 Javascript
基于vue 动态加载图片src的解决方法
2018/02/05 Javascript
Vue 引入AMap高德地图的实现代码
2019/04/29 Javascript
Vue通过配置WebSocket并实现群聊功能
2019/12/31 Javascript
js实现简单的打印表格
2020/01/15 Javascript
javascript实现简单搜索功能
2020/03/26 Javascript
[01:19]2014DOTA2国际邀请赛 采访TITAN战队ohaiyo 能赢DK很幸运
2014/07/12 DOTA
Python中使用PDB库调试程序
2015/04/05 Python
Python生成器以及应用实例解析
2018/02/08 Python
python2.6.6如何升级到python2.7.14
2018/04/08 Python
Vs Code中8个好用的python 扩展插件
2020/10/12 Python
Python txt文件如何转换成字典
2020/11/03 Python
使用HTML5和CSS3制作一个模态框的示例
2018/03/07 HTML / CSS
班级入场式解说词
2014/02/01 职场文书
制作部班长职位说明书
2014/02/26 职场文书
CSS3实现的3D隧道效果
2021/04/27 HTML / CSS
Java图书管理系统,课程设计必用(源码+文档)
2021/06/30 Java/Android
vue 把二维或多维数组转一维数组
2022/04/24 Vue.js