写点什么

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

作者:AntDream
  • 2024-06-17
    浙江
  • 本文字数:2650 字

    阅读完需:约 9 分钟

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 = Truefont.underline = Truestyle.font = font
# 然后应用ws.write(2, 1, 'test', style)
复制代码


后续几个属性的设置都是类似的,都是 4 步走:


  1. 拿到XFStyle

  2. 拿到对应需要的属性,比如这里的Font对象

  3. 设置具体的属性值

  4. 最后就是在write方法写入数据的时候应用就行

单元格对齐

先来看单元格对齐怎么设置


# 单元格对齐alignment = xlwt.Alignment()
# 水平对齐方式和垂直对齐方式alignment.horz = xlwt.Alignment.HORZ_CENTERalignment.vert = xlwt.Alignment.VERT_CENTER# 自动换行alignment.wrap = 1style.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 = 5style.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.DASHEDstyle.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 文件的时候可以参考一下。




欢迎关注我的公众号AntDream查看更多精彩文章!

发布于: 刚刚阅读数: 6
用户头像

AntDream

关注

AntDream,欢迎一起交流学习 2024-06-07 加入

专注移动端,偶尔搞点别的,哈哈

评论

发布
暂无评论
Python数据处理之导入导出excel数据_Python_AntDream_InfoQ写作社区