Python数据处理之导入导出excel数据

简介: 本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点 Python的一大应用就是数据分析了,而数据分析中,经常碰到需要处理Excel数据的情况。

本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点

Python的一大应用就是数据分析了,而数据分析中,经常碰到需要处理Excel数据的情况。这里做一个Python处理Excel数据的总结,基本受用大部分情况。相信以后用Python处理Excel数据不再是难事儿!

Python处理Excel数据需要用到2个库:xlwtxlrdxlwt库负责将数据导入生成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库操作非常简单,基本就三步走:

  1. 打开一个Workbook对象,并用add_sheet方法添加一个表
  2. 然后就是用write方法写入数据
  3. 最后用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步走:

  1. 拿到XFStyle
  2. 拿到对应需要的属性,比如这里的Font对象
  3. 设置具体的属性值
  4. 最后就是在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)

总结一下,分为一下几步:

  1. 首先通过xlrd库的open_workbook方法打开Excel文件
  2. 然后通过sheet_by_index方法获取表
  3. 然后分别获取表的行数和列数,便于后面循环遍历
  4. 根据列数和行数,循环遍历,通过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)

基本也是三步走:

  1. 通过cell_value方法获取时间值
  2. 然后通过xldate_as_datetime方法获取时间戳
  3. 然后格式化一下

总结

Excel文件是用Python处理数据时常会碰到的一类场景,有了xlwtxlrd的帮助可以非常快速的导入和导出Excel数据。大家可以把这篇文章收藏起来,以后碰到处理Excel文件的时候可以参考一下。

目录
相关文章
|
1月前
|
数据采集 数据可视化 数据挖掘
利用Python自动化处理Excel数据:从基础到进阶####
本文旨在为读者提供一个全面的指南,通过Python编程语言实现Excel数据的自动化处理。无论你是初学者还是有经验的开发者,本文都将帮助你掌握Pandas和openpyxl这两个强大的库,从而提升数据处理的效率和准确性。我们将从环境设置开始,逐步深入到数据读取、清洗、分析和可视化等各个环节,最终实现一个实际的自动化项目案例。 ####
213 10
|
26天前
|
数据可视化 数据挖掘 大数据
1.1 学习Python操作Excel的必要性
学习Python操作Excel在当今数据驱动的商业环境中至关重要。Python能处理大规模数据集,突破Excel行数限制;提供丰富的库实现复杂数据分析和自动化任务,显著提高效率。掌握这项技能不仅能提升个人能力,还能为企业带来价值,减少人为错误,提高决策效率。推荐从基础语法、Excel操作库开始学习,逐步进阶到数据可视化和自动化报表系统。通过实际项目巩固知识,关注新技术,为职业发展奠定坚实基础。
|
1月前
|
存储 Java easyexcel
招行面试:100万级别数据的Excel,如何秒级导入到数据库?
本文由40岁老架构师尼恩撰写,分享了应对招商银行Java后端面试绝命12题的经验。文章详细介绍了如何通过系统化准备,在面试中展示强大的技术实力。针对百万级数据的Excel导入难题,尼恩推荐使用阿里巴巴开源的EasyExcel框架,并结合高性能分片读取、Disruptor队列缓冲和高并发批量写入的架构方案,实现高效的数据处理。此外,文章还提供了完整的代码示例和配置说明,帮助读者快速掌握相关技能。建议读者参考《尼恩Java面试宝典PDF》进行系统化刷题,提升面试竞争力。关注公众号【技术自由圈】可获取更多技术资源和指导。
|
2月前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
164 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
3月前
|
数据处理 Python
Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
这篇文章介绍了如何使用Python读取Excel文件中的数据,处理后将其保存为txt、xlsx和csv格式的文件。
243 3
Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
|
1月前
|
机器学习/深度学习 前端开发 数据处理
利用Python将Excel快速转换成HTML
本文介绍如何使用Python将Excel文件快速转换成HTML格式,以便在网页上展示或进行进一步的数据处理。通过pandas库,你可以轻松读取Excel文件并将其转换为HTML表格,最后保存为HTML文件。文中提供了详细的代码示例和注意事项,帮助你顺利完成这一任务。
84 0
|
3月前
|
Python
python读写操作excel日志
主要是读写操作,创建表格
79 2
|
3月前
|
数据采集 存储 JavaScript
自动化数据处理:使用Selenium与Excel打造的数据爬取管道
本文介绍了一种使用Selenium和Excel结合代理IP技术从WIPO品牌数据库(branddb.wipo.int)自动化爬取专利信息的方法。通过Selenium模拟用户操作,处理JavaScript动态加载页面,利用代理IP避免IP封禁,确保数据爬取稳定性和隐私性。爬取的数据将存储在Excel中,便于后续分析。此外,文章还详细介绍了Selenium的基本设置、代理IP配置及使用技巧,并探讨了未来可能采用的更多防反爬策略,以提升爬虫效率和稳定性。
233 4
|
5月前
|
关系型数据库 MySQL Shell
不通过navicat工具怎么把查询数据导出到excel表中
不通过navicat工具怎么把查询数据导出到excel表中
65 0
|
3月前
|
easyexcel Java UED
SpringBoot中大量数据导出方案:使用EasyExcel并行导出多个excel文件并压缩zip后下载
在SpringBoot环境中,为了优化大量数据的Excel导出体验,可采用异步方式处理。具体做法是将数据拆分后利用`CompletableFuture`与`ThreadPoolTaskExecutor`并行导出,并使用EasyExcel生成多个Excel文件,最终将其压缩成ZIP文件供下载。此方案提升了导出效率,改善了用户体验。代码示例展示了如何实现这一过程,包括多线程处理、模板导出及资源清理等关键步骤。