Python读取Excel⽂件并写⼊数据库
好⽅法
最近迷上了⾼效处理数据的pandas,其实这个是⽤来做数据分析的,如果你是做⼤数据分析和测试的,那么这个是⾮常的有⽤的!!但是其实我们平时在做⾃动化测⼀、安装环境:
[
复制代码
](javascript:void(0); "复制代码")
<pre 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的表单数据如下所⽰:
image
student的表单数据如下所⽰:
image
1:在利⽤pandas模块进⾏操作前,可以先引⼊这个模块,如下:
2:读取Excel⽂件的两种⽅式:
⽅法⼀:默认读取第⼀个表单
ad_excel('lemon.xlsx')#这个会直接默认读取到这个Excel的第⼀个表单
data=df.head()#默认读取前5⾏的数据
print("获取到所有的值:\n{0}".format(data))#格式化输出</pre>
得到的结果是⼀个⼆维矩阵,如下所⽰:
image
<pre Courier New"
!important; font-size: 12px !important;">#⽅法⼆:通过指定表单名的⽅式来读取
ad_excel('lemon.xlsx',sheet_name='student')#可以通过sheet_name来指定读取的表单
data=df.head()#默认读取前5⾏的数据
print("获取到所有的值:\n{0}".format(data))#格式化输出</pre>
得到的结果如下所⽰,也是⼀个⼆维矩阵:
image
[
复制代码
](javascript:void(0); "复制代码")python怎么读入excel
<pre Courier New"
!important; font-size: 12px !important;">#⽅法三:通过表单索引来指定要访问的表单,0表⽰第⼀个表单 #也可以采⽤表单名和索引的双重⽅式来定位表单 #也可以同时定位多个表单,⽅式都罗列如下所⽰
ad_excel('lemon.xlsx',sheet_name=['python','student'])#可以通过表单名同时指定多个 #
ad_excel('lemon.xlsx',sheet_name=0)#可以通过表单索引来指定读取的表单 #
ad_excel('lemon.xlsx',sheet_name=['python',1])#可以混合的⽅式来指定 # ad_excel('lemon.xlsx',sheet_name= [1,2])#可以通过索引 同时指定多个
data=df.values#获取所有的数据,注意这⾥不能⽤head()⽅法哦~
print("获取到所有的值:\n{0}".format(data))#格式化输出</pre>
[
复制代码
](javascript:void(0); "复制代码")
具体结果是怎样的,同学们可以⾃⼰⼀个⼀个的去尝试,这个结果是⾮常有意思的,但是同时同学们也发现了,这个数据是⼀个⼆维矩阵,对于我们去做⾃动化测试,并不能很顺利的处理,所以接下来,我们就会详细的讲解,如何来读取⾏号和列号以及每⼀⾏的内容 以及制定⾏列的内容。
三、pandas操作Excel的⾏列
1:读取指定的单⾏,数据会存在列表⾥⾯
!important; font-size: 12px !important;">#1:读取指定⾏
ad_excel('lemon.xlsx')#这个会直接默认读取到这个Excel的第⼀个表单
data=df.ix[0].values#0表⽰第⼀⾏ 这⾥读取数据并不包含表头,要注意哦!
print("读取指定⾏的数据:\n{0}".format(data))</pre>
得到的结果如下所⽰:
image
2:读取指定的多⾏,数据会存在嵌套的列表⾥⾯:
<pre Courier New"
!important; font-size: 12px !important;">ad_excel('lemon.xlsx')
data=df.ix[[1,2]].values#读取指定多⾏的话,就要在ix[]⾥⾯嵌套列表指定⾏数
print("读取指定⾏的数据:\n{0}".format(data))</pre>
3:读取指定的⾏列:
<pre Courier New"
!important; font-size: 12px !important;">ad_excel('lemon.xlsx')
data=df.ix[1,2]#读取第⼀⾏第⼆列的值,这⾥不需要嵌套列表 print("读取指定⾏的数据:\n{0}".format(data))</pre>
4:读取指定的多⾏多列值:
<pre Courier New"
!important; font-size: 12px !important;">ad_excel('lemon.xlsx')
data=df.ix[[1,2],['title','data']].values#读取第⼀⾏第⼆⾏的title以及data列的值,这⾥需要嵌套列表 print("读取指定⾏的数据:
\n{0}".format(data))</pre>
5:获取所有⾏的指定列
<pre Courier New"
!important; font-size: 12px !important;">ad_excel('lemon.xlsx')
data=df.ix[:,['title','data']].values#读所有⾏的title以及data列的值,这⾥需要嵌套列表 print("读取指定⾏的数据:\n{0}".format(data)) </pre>
6:获取⾏号并打印输出
<pre Courier New"
!important; font-size: 12px !important;">ad_excel('lemon.xlsx') print("输出⾏号列表",df.index.values)
输出结果是:
输出⾏号列表 [0 1 2 3]</pre>
7:获取列名并打印输出
<pre Courier New"
!important; font-size: 12px !important;">ad_excel('lemon.xlsx') print("输出列标题",df.columns.values)
运⾏结果如下所⽰:
输出列标题 ['case_id' 'title' 'data']</pre>
8:获取指定⾏数的值:
[
复制代码
](javascript:void(0); "复制代码")
!important; font-size: 12px !important;">ad_excel('lemon.xlsx') print("输出值",df.sample(3).val
ues)#这个⽅法类似于head()⽅法以及df.values⽅法
输出值
[[2 '输⼊错误的密码' '{"mobilephone":"186********","pwd":"12345678"}']
[3 '正常充值' '{"mobilephone":"186********","amount":"1000"}']
[1 '正常登录' '{"mobilephone":"186********","pwd":"123456"}']]</pre>
[
复制代码
](javascript:void(0); "复制代码")
9:获取指定列的值:
<pre Courier New"
!important; font-size: 12px !important;">ad_excel('lemon.xlsx') print("输出值\n",df['data'].values)</pre>
四:pandas处理Excel数据成为字典
我们有这样的数据,
image
,处理成列表嵌套字典,且字典的key为表头名。
实现的代码如下所⽰:
[
复制代码
](javascript:void(0); "复制代码")
<pre Courier New"
!important; font-size: 12px !important;">ad_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 Courier New"
!important; font-size: 12px !important;">最终获取到的数据是:
[{'title': '正常登录', 'case_id': 1, 'data': '{"mobilephone":"186********","pwd":"123456"}'},
{'title': '输⼊错误的密码', 'case_id': 2, 'data': '{"mobilephone":"186********","pwd":"12345678"}'},
{'title': '正常充值', 'case_id': 3, 'data': '{"mobilephone":"186********","amount":"1000"}'},
{'title': '充值输⼊负数', 'case_id': 4, 'data': '{"mobilephone":"186********","amount":"-100"}'}]</pre>
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论