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将多个文本文件合并为一个文本的代码(便于搜索)
Mar 13 Python
Python实现的爬取网易动态评论操作示例
Jun 06 Python
python实现Virginia无密钥解密
Mar 20 Python
解决python3中的requests解析中文页面出现乱码问题
Apr 19 Python
django 自定义filter 判断if var in list的例子
Aug 20 Python
Python3.6实现根据电影名称(支持电视剧名称),获取下载链接的方法
Aug 26 Python
Python3+Requests+Excel完整接口自动化测试框架的实现
Oct 11 Python
pygame实现俄罗斯方块游戏(对战篇1)
Oct 29 Python
python装饰器相当于函数的调用方式
Dec 27 Python
Python中如何将一个类方法变为多个方法
Dec 30 Python
Python3爬虫中关于Ajax分析方法的总结
Jul 10 Python
Python Pandas模块实现数据的统计分析的方法
Jun 24 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
全国中波电台频率表
2020/03/11 无线电
php-perl哈希算法实现(times33哈希算法)
2013/12/30 PHP
php实现推荐功能的简单实例
2019/09/29 PHP
用JavaScript实现仿Windows关机效果
2007/03/10 Javascript
javascript indexOf函数使用说明
2008/07/03 Javascript
最短的IE判断代码
2011/03/13 Javascript
javascript按位非运算符的使用方法
2013/11/14 Javascript
jquery中ajax函数执行顺序问题之如何设置同步
2014/02/28 Javascript
JS中的Replace方法使用经验分享
2015/05/20 Javascript
js数组如何添加json数据及js数组与json的区别
2015/10/27 Javascript
跟我学习javascript的for循环和for...in循环
2015/11/18 Javascript
js鼠标按键事件和键盘按键事件用法实例汇总
2016/10/03 Javascript
Javascript 普通函数和构造函数的区别
2016/11/05 Javascript
JQuery实现定时刷新功能代码
2017/05/09 jQuery
JS验证全角与半角及相互转化的介绍
2017/05/18 Javascript
关于Vue实现组件信息的缓存问题
2017/08/23 Javascript
浅谈vue中使用图片懒加载vue-lazyload插件详细指南
2017/10/23 Javascript
vue+element创建动态的form表单及动态生成表格的行和列
2019/05/20 Javascript
微信小程序实现左滑动删除效果
2020/03/30 Javascript
python实现数独游戏 java简单实现数独游戏
2018/03/30 Python
PyQt5每天必学之滑块控件QSlider
2018/04/20 Python
python selenium执行所有测试用例并生成报告的方法
2019/02/13 Python
pandas factorize实现将字符串特征转化为数字特征
2019/12/19 Python
python GUI库图形界面开发之PyQt5 MDI(多文档窗口)QMidArea详细使用方法与实例
2020/03/05 Python
浅谈python 调用open()打开文件时路径出错的原因
2020/06/05 Python
keras在构建LSTM模型时对变长序列的处理操作
2020/06/29 Python
澳大利亚的奢侈品牌:Oroton
2016/08/26 全球购物
兰蔻美国官网:Lancome美国
2017/04/25 全球购物
长安大学毕业生自我鉴定
2014/01/17 职场文书
关爱留守儿童倡议书
2014/04/15 职场文书
党的群众路线教育实践活动领导班子整改方案
2014/10/25 职场文书
2015年圣诞节活动总结
2015/03/24 职场文书
网络销售员岗位职责
2015/04/11 职场文书
解决pycharm下载库时出现Failed to install package的问题
2021/09/04 Python
AudioContext 实现音频可视化(web技术分享)
2022/02/24 Javascript
MySQL分区表管理命令汇总
2022/03/21 MySQL