Python3使用xlrd、xlwt处理Excel方法数据


Posted in Python onFebruary 28, 2020

说在前头

最近在做毕设,题目是道路拥堵预测系统,学长建议我使用SVM算法进行预测,但是在此之前需要把Excel中的数据进行二次处理,原始数据不满足我的需要,可是。。有346469条数据,不能每一条都自己进行运算并且将它进行归一化运算!!

Python3使用xlrd、xlwt处理Excel方法数据

作为一个Java开发者,Python的使用我是从来没用过的啊,也是作死选了个这么难的题目。。后来在网上查阅发现xlrd可以通过Python代码读取Excel的文件,他的含义是xls文件的read(只读),另外它的同类是xlwt(xls的write喽~),这个是可以执行写入操作的库。那我们就开始:

Python3使用xlrd、xlwt处理Excel方法数据

作为一名新手,Python的dalao千万别喷,我们抱着学习的心态一起来学习这两个库到底怎么使用吧!

一、xlrd的使用

篇幅太多,这篇只介绍xlrd的使用,xlwt下篇继续哦~
想使用肯定先安装,windows系统下如果你安装了Python环境,直接打开cmd键入:$ pip install xlrdxlwt 也是这样安装,说实话Python这些个类库真的是太方便了(题外话)

我们比如要修改这个Excel的数据:

Python3使用xlrd、xlwt处理Excel方法数据

总共有两层:

Python3使用xlrd、xlwt处理Excel方法数据

导入xlrd

import xlrd

读取数据文件

workbook = xlrd.open_workbook(r'E:\test.xlsx')

打印Sheet信息

print(workbook.sheet_names())

打印结果:

Python3使用xlrd、xlwt处理Excel方法数据

根据下标获取表单

print(workbook.sheet_names()[1])

后面加个中括号,里面是表单的位置,我输入1,表示第二页,所以打印:

Python3使用xlrd、xlwt处理Excel方法数据

根据索引或名称获取数据的名称、行或列

index = workbook.sheet_by_index(0)# 根据索引或者行数列数和名称
print('索引名称:'+str(index.name)+' 索引的行数'+
   str(index.nrows)+' 索引的列数'+str(index.ncols))

输出结果:

Python3使用xlrd、xlwt处理Excel方法数据

Python3使用xlrd、xlwt处理Excel方法数据

确实是七行五列,没毛病~

Python3使用xlrd、xlwt处理Excel方法数据

同样根据表单的名称也能拿到Sheet对象

index2 = workbook.sheet_by_name('Sheet1')
print('索引名称:'+str(index2.name)+' 索引的行数'+
   str(index2.nrows)+' 索引的列数'+str(index2.ncols))

输出结果:

Python3使用xlrd、xlwt处理Excel方法数据

获取整行整列的内容

最重要的来了,怎么获取一整行、一整列的内容呢?
首先要拿到表单的对象,通过上面说的两种方法:
我习惯用名称获取:

sheet1= workbook.sheet_by_name('Sheet1')

获取了以后:

row_values = sheet1.row_values(2)
print('第三行的内容:'+str(row_values))
col_values = sheet1.col_values(2)
print('第三列的内容'+str(col_values))

我们看看输出结果:

Python3使用xlrd、xlwt处理Excel方法数据

至于时间为什么是43812.0,这个是天数,可以转换成日期格式,后边我会详细写用法~

Python3使用xlrd、xlwt处理Excel方法数据

百分百没毛病的!~

获取具体几行几列的内容

这个方法有很多,都可以用,看个人习惯,我列举六种:

print(sheet1.cell_value(1, 1))
print(sheet1.cell(1, 1))
print(sheet1.row(1)[1])
print(sheet1.col(1)[1])
print(sheet1.row_values(1)[1])
print(sheet1.col_values(1)[1])

想知道某行某列的类型是什么怎么做呢?

print(sheet1.cell(1, 0).ctype)
print(sheet1.cell(1, 2).ctype)
print(sheet1.cell(1, 3).ctype)

输出结果为:

1
2
3

ctype 分别: 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error

tip: 打印的时候需要注意:

python跟java在类型转换上有很大的不同,这点我更喜欢Java的处理方式(打印的时候通通转换成String类型),比如我想打印很多类型的属性,同时打印没问题,但是Python必须要限定类型为str,否则就会报错

public class test {
  public static void main(String[] args) {
    int num = 1;
    String ss = "sss";
    System.out.println("Integer"+num+"String"+ss);
  }
}

java完全可以正常运行~
Python:

a = 1
b = 'ss'
print('int:'+a+'str'+ b)

拼接的时候必须限定a和b为str类型,否则报错!
报错内容:

Python3使用xlrd、xlwt处理Excel方法数据

如何修改date类型为float类型的数字

想修改时间格式的属性:

as_tuple = xlrd.xldate_as_tuple(sheet1.cell_value(1, 3), workbook.datemode)

cell_value(1,3) 表示我要获取 2019/11/13

Python3使用xlrd、xlwt处理Excel方法数据

第二个参数datemode就不解释了,需要改哪个文件,就调用哪个文件对象的datemode
我们输出一下as_tuple这个对象:

Python3使用xlrd、xlwt处理Excel方法数据

看到这个元组里的数据也可以看出来,前三个分别就是年月日了,所以我们要提取这三个数字:

d = date(*as_tuple[:3])

date()这个方法需要三个参数,分别是年月日,所以我们提取元组的前三个数字正好可以:
我们打印一下:

Python3使用xlrd、xlwt处理Excel方法数据

这个不就是我们需要的格式吗?
等等,我是用斜杠“/”隔开的,这个怎么是“-”,我们改一下格式,通过strftime(string formate time)方法:

strftime = d.strftime('%Y/%m/%d')

打印一下:

Python3使用xlrd、xlwt处理Excel方法数据

这样就完美了~

怎么获取合并单元格

我们转到sheet2

Python3使用xlrd、xlwt处理Excel方法数据

可以看到第六行的2-5列都是合并单元格,内容是无,第七行和第八行的第二列是合并单元格,内容是无,第七行和第八行的第四和第五列是合并单元格,内容是啥都没有。

我们需要用到方法:merged_cells

sheet2 = workbook.sheet_by_name('Sheet2')
print(sheet2.merged_cells)

输出结果:

[(5, 6, 1, 5), (6, 8, 1, 2), (6, 8, 3, 5)]

这个5615,6812,6835啥意思?
四个参数分别为行、行最大(不超过最大行)、列、列最大(不超过最大列)
拿5615举例子,第五行到第六行的左闭右开区间[5,6),这就是第五行,[1,5)表示第一列到第四列,我们看:

Python3使用xlrd、xlwt处理Excel方法数据

由于python是从零开始,所以python的第五行,实际上是Excel的第六行,第1-4列就 是 2-5列,这不就是无吗?这只是告诉你哪些是合并单元格,想打印怎么办?

print(sheet2.cell_value(5, 1))
print(sheet2.cell_value(6, 1))
print(sheet2.cell_value(6, 3))

只去第一个和第三个参数就可以打印出来啦

Python3使用xlrd、xlwt处理Excel方法数据

看到这里说明你真的很努力~看懂为主哦!感谢点赞,有错误请指正,有问题留言告诉我!Bye Bye

Python3使用xlrd、xlwt处理Excel方法数据

到此这篇关于Python3使用xlrd、xlwt处理Excel方法数据的文章就介绍到这了,更多相关Python3使用xlrd、xlwt处理Excel内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python字典操作简明总结
Apr 13 Python
django框架如何集成celery进行开发
May 24 Python
python验证码识别教程之利用投影法、连通域法分割图片
Jun 04 Python
浅谈Pycharm中的Python Console与Terminal
Jan 17 Python
Django Admin中增加导出Excel功能过程解析
Sep 04 Python
python3图片文件批量重命名处理
Oct 31 Python
python Jupyter运行时间实例过程解析
Dec 13 Python
python 数据分析实现长宽格式的转换
May 18 Python
python 监控logcat关键字功能
Sep 04 Python
Python web框架(django,flask)实现mysql数据库读写分离的示例
Nov 18 Python
python 如何在list中找Topk的数值和索引
May 20 Python
Python docx库删除复制paragraph及行高设置图片插入示例
Jul 23 Python
Python进程Multiprocessing模块原理解析
Feb 28 #Python
python 实现多维数组(array)排序
Feb 28 #Python
python对数组进行排序,并输出排序后对应的索引值方式
Feb 28 #Python
Python使用Socket实现简单聊天程序
Feb 28 #Python
在python3中使用shuffle函数要注意的地方
Feb 28 #Python
Python对称的二叉树多种思路实现方法
Feb 28 #Python
pycharm如何实现跨目录调用文件
Feb 28 #Python
You might like
Yii2框架中使用PHPExcel导出Excel文件的示例
2017/08/09 PHP
Yii2框架实现登录、退出及自动登录功能的方法详解
2017/10/24 PHP
总结PHP中初始化空数组的最佳方法
2019/02/13 PHP
js动态添加onload、onresize、onscroll事件(另类方法)
2012/12/26 Javascript
JS 跳转页面延迟2种方法
2013/03/29 Javascript
Jquery 例外被抛出且未被接住原因介绍
2013/09/04 Javascript
js类型转换与引用类型详解(Boolean_Number_String)
2014/03/07 Javascript
Javascript连接多个数组不用concat来解决
2014/03/24 Javascript
javascript监听鼠标滚轮事件浅析
2014/06/05 Javascript
node.js调用C++开发的模块实例
2015/07/03 Javascript
JS绘制生成花瓣效果的方法
2015/08/05 Javascript
javascript数字验证的实例代码(推荐)
2016/08/20 Javascript
详解JavaScript时间处理之几个月前或几个月后的指定日期
2016/12/21 Javascript
详解微信小程序开发—你期待的分享功能来了,微信小程序序新增5大功能
2016/12/23 Javascript
详解vue2父组件传递props异步数据到子组件的问题
2017/06/29 Javascript
最实用的JS数组函数整理
2017/12/05 Javascript
jQuery实现简单的下拉菜单导航功能示例
2017/12/07 jQuery
jQuery 防止相同的事件快速重复触发方法
2018/02/08 jQuery
JS中数据结构之栈
2019/01/01 Javascript
基于vue实现图片验证码倒计时60s功能
2019/12/10 Javascript
Python2.x中str与unicode相关问题的解决方法
2015/03/30 Python
Python类的用法实例浅析
2015/05/27 Python
python中的代码编码格式转换问题
2015/06/10 Python
Python过滤列表用法实例分析
2016/04/29 Python
python魔法方法-自定义序列详解
2016/07/21 Python
Pandas 对Dataframe结构排序的实现方法
2018/04/10 Python
在python中实现同行输入/接收多个数据的示例
2019/07/20 Python
python 进程间数据共享multiProcess.Manger实现解析
2019/09/23 Python
Django实现文件上传下载
2019/10/06 Python
HTML5在手机端实现视频全屏展示方法
2020/11/23 HTML / CSS
Windows和Linux动态库应用异同
2016/07/28 面试题
京剧自荐信
2014/01/26 职场文书
婚礼嘉宾致辞
2015/07/28 职场文书
Python机器学习之决策树和随机森林
2021/07/15 Javascript
【D4DJ】美少女DJ企划 动画将于明年冬季开播第2季
2022/04/11 日漫
MySQL远程无法连接的一些常见原因总结
2022/09/23 MySQL