Python数据处理之导入导出excel数据
本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点
Python的一大应用就是数据分析了,而数据分析中,经常碰到需要处理Excel数据的情况。这里做一个Python处理Excel数据的总结,基本受用大部分情况。相信以后用Python处理Excel数据不再是难事儿!
Python处理Excel数据需要用到2个库:
xlwt
和xlrd
。xlwt
库负责将数据导入生成Excel表格文件,而xlrd
库则负责将Excel表格中的数据取出来。
xlwt
库将数据导入Excel
将数据写入一个Excel文件
wb = xlwt.Workbook() # 添加一个表 ws = wb.add_sheet('test') # 3个参数分别为行号,列号,和内容 # 需要注意的是行号和列号都是从0开始的 ws.write(0, 0, '第1列') ws.write(0, 1, '第2列') ws.write(0, 2, '第3列') # 保存excel文件 wb.save('./test.xls')
可以看到,用xlwt
库操作非常简单,基本就三步走:
- 打开一个
Workbook
对象,并用add_sheet
方法添加一个表 - 然后就是用
write
方法写入数据 - 最后用
save
方法保存
需要注意的是,
xlwt
库里面所定义的行和列都是从0
开始计数的
定制Excel表格样式
表格样式一般主要有这么几块内容:字体、对齐方式、边框、背景色、宽度以及特殊内容,比如超链接、日期时间等。下面我们来分别看看用xlwt
库怎么定制这些样式。
字体
xlwt
库支持的字体属性也比较多,大概如下:
设置字体需要用到xlwt
库的XFStyle
类和Font
类,代码模版如下:
style = xlwt.XFStyle() # 设置字体 font = xlwt.Font() # 比如设置字体加粗和下划线 font.bold = True font.underline = True style.font = font # 然后应用 ws.write(2, 1, 'test', style)
后续几个属性的设置都是类似的,都是4步走:
- 拿到
XFStyle
- 拿到对应需要的属性,比如这里的
Font
对象 - 设置具体的属性值
- 最后就是在
write
方法写入数据的时候应用就行
单元格对齐
先来看单元格对齐怎么设置
# 单元格对齐 alignment = xlwt.Alignment() # 水平对齐方式和垂直对齐方式 alignment.horz = xlwt.Alignment.HORZ_CENTER alignment.vert = xlwt.Alignment.VERT_CENTER # 自动换行 alignment.wrap = 1 style.alignment = alignment # 然后应用 ws.write(2, 1, 'test', style)
上面这个自动换行的属性还是蛮有用的,因为我们很多时候数据会比较长,最好再加上单元格的宽度属性一起使用,这样整体样式会好很多
单元格宽度设置:
# 设置单元格宽度,也就是某一列的宽度 ws.col(0).width = 6666
单元格的背景色
背景色对应的属性是 Pattern
# 背景色 pattern = xlwt.Pattern() pattern.pattern = xlwt.Pattern.SOLID_PATTERN # 背景色为黄色 # 0 = Black, 1 = White, 2 = Red, 3 = Green, 4 = Blue, 5 = Yellow, 6 = Magenta, # 7 = Cyan, 16 = Maroon, 17 = Dark Green, 18 = Dark Blue, 19 = Dark Yellow , # almost brown), 20 = Dark Magenta, 21 = Teal, 22 = Light Gray, 23 = Dark Gray # ... pattern.pattern_fore_colour = 5 style.pattern = pattern # 然后应用 ws.write(2, 1, 'test', style)
单元格边框
边框属性是Borders
单元格边框就2类:颜色和边框线样式
可以分别设置上下左右边框的颜色和样式
# 边框 borders = xlwt.Borders() # 边框可以分别设置top、bottom、left、right # 每个边框又可以分别设置颜色和线样式:实线、虚线、无 # 颜色设置,其他类似 borders.left_colour = 0x40 # 设置虚线,其他类似 borders.bottom = xlwt.Borders.DASHED style.borders = borders # 然后应用 ws.write(2, 1, 'test', style)
特殊内容,比如超链接和公式
特殊内容一般主要会碰到这几类:超链接、公式和时间日期
处理这些特殊内容需要用到Formula
# 超链接 link = 'HYPERLINK("http://www.baidu.com";"Baidu")' formula = xlwt.Formula(link) ws.write(2, 0, formula) # 公式也是类似 ws.write(1, 1, xlwt.Formula('SUM(A1,B1)')) # 时间 style.num_format_str = 'M/D/YY' ws.write(2, 1, datetime.datetime.now(), style)
以上就是用Python将数据写入到Excel的全部内容了,下面我们再来看看怎么读取Excel中的数据做处理。
xlrd
库读取Excel中的数据
读取Excel文件
同样的用xlrd
库读取Excel的数据也是轻轻松松,先来看下实现代码
# 先打开一个文件 wb = xlrd.open_workbook(file_path) # 获取第一个表 sheet1 = wb.sheet_by_index(0) # 总行数 nrows = sheet1.nrows # 总列数 ncols = sheet1.ncols # 后面就通过循环即可遍历数据了 # 取数据 for i in range(nrows): for j in range(ncols): # cell_value方法取出第i行j列的数据 value = sheet1.cell_value(i, j) print(value)
总结一下,分为一下几步:
- 首先通过
xlrd
库的open_workbook
方法打开Excel文件 - 然后通过
sheet_by_index
方法获取表 - 然后分别获取表的行数和列数,便于后面循环遍历
- 根据列数和行数,循环遍历,通过
cell_value
方法获取每个单元格中的数据
工作表的相关操作
获取一个工作表,有多种方式
# 通过索引 sheet1 = wb.sheets()[0] sheet1 = wb.sheet_by_index(0) # 通过名字 sheet1 = wb.sheet_by_name('test') # 获取所有表名 # sheet_names = wb.sheet_names()
获取某一行或某一列的所有数据
# 获取行中所有数据,返回结果是一个列表 tabs = sheet1.row_values(rowx=0, start_colx=0, end_colx=None) # 返回一行一共有多少数据 len_value = sheet1.row_len(rowx=0)
row_values
的三个参数分别是:行号、开始的列和结束的列,其中结束的列为None
表示获取从开始列到最后的所有数据
类似的还有获取某一列的数据
cols = sheet1.col_values(colx=0, start_rowx=0, end_rowx=None)
处理时间数据
时间数据比较特殊,没发直接通过上面的cell_value
方法获取。需要先转换为时间戳,然后再格式化成我们想要的格式。
比如要获取Excel表格中,格式为2019/8/13 20:46:35
的时间数据
# 获取时间 time_value = sheet1.cell_value(3, 0) # 获取时间戳 time_stamp = int(xlrd.xldate.xldate_as_datetime(time_value, 0).timestamp()) print(time_stamp) # 格式化日期 time_rel = time.strftime("%Y/%m/%d", time.localtime(time_stamp)) print(time_rel)
基本也是三步走:
- 通过
cell_value
方法获取时间值 - 然后通过
xldate_as_datetime
方法获取时间戳 - 然后格式化一下
总结
Excel文件是用Python处理数据时常会碰到的一类场景,有了xlwt
和 xlrd
的帮助可以非常快速的导入和导出Excel数据。大家可以把这篇文章收藏起来,以后碰到处理Excel文件的时候可以参考一下。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
wordpress 内容备份镜像站点建立方法及注意事项
作为虾米级站长一枚,实则是不懂代码的菜鸟,由于自己的站点是小水管主机,而且稳定性也难以保障,在很多访客的建议下,也想建立一个内容镜像站点,以实现当主站的主机维护时,能够有一个备用站点让访客访问。 最先我是想能够有一个共用的数据库可以给两个站点一起使用,但百度查了资料后,发现这对于虚拟主机建站来说好像不适用。 直到找到了以下的代码,可以实现源站发表文章时,自动在镜像站点也发表出来。 第一步,在镜像站根目录创建一个命名为 post.php 的 php 文件,代码内容: //以下为代码正文… <?php //文章接收 define('WP_USE_THEMES', false); require_once("wp-load.php"); $key='123456'; //设置启动 API 的密钥 if($_POST['key']==$key){ $categorys=explode(',',$_POST['category']); $category=array(); for($x=1;$x<count($categorys);$x++) { $category[$x-1]=ge...
- 下一篇
ReactNative报错记录以及原因分析+ReactNative报错记录
ReactNative常用命令 指定版本安装 react-native init demo --verbose --version 0.59.9 手机调出调式模式 直接在开发环境输入 adb shell input keyevent 82 调出调试菜单 命令行查看连接的手机设备 adb devices 调试模式网络面板查看请求 React Native Debugger在Chrome中查看network信息 ReactNative项目运行的两种方式 命令行运行(ReactNative项目根目录下) react-native run-android android studio中运行 先在命令行启动(ReactNative项目根目录下)如果在android studio启动的时候发现无法访问加载js脚本文件,注意用命令 adb shell input keyevent 82 调出手机调式菜单,然后设置IP地址和端口号(ip地址=本地电脑的ip地址:8081)。 react-native start 然后就可以在android studio中像启动其它原生app项目一样启动项目了。 运行r...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Docker安装Oracle12C,快速搭建Oracle学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Red5直播服务器,属于Java语言的直播服务器
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- SpringBoot2全家桶,快速入门学习开发网站教程
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2整合Redis,开启缓存,提高访问速度