Python数据处理

2015/04/11 Python

Python数据处理

Python处理Excel

openpyxl简介与安装

根据官方文档的介绍,openpyxl是一个读写Excel2010(xlsx/xlsm)文档的Python库,如果要处理更早格式的Excel文档,需要用到另外的库。openpyxl是一个比较综合的工具,能够同时读取和修改Excel文档。XlsxWriter也是一个与Excel处理相关的知名项目,仅支持创建和写入Excel文档,不支持读取Excel文档。

使用openpyxl读取Excel文档

openxpyxl中有三个不同层次的类,分别是Workbook、Worksheet和Cell。Workbook是对Excel工作簿的抽象,Worksheet是对表格的抽象,Cell是对单元格的抽象。每一个类都包含了若干属性和方法,以便于我们通过这些属性和方法获取表格中的数据。

import openpyxl

book = openpyxl.load_workbook('sample.xlsx')
sheet = book.active

a1 = sheet['A1']
a2 = sheet['A2']
a3 = sheet['A3']
c1 = sheet['C1']
c4 = sheet.cell(row=4, column=3)

print(a1.value)
print(a2.value)
print(a3.value)
print(c1.value)
print(c4.value)

# 查看多个单元格
cells = sheet['A1': 'D4'] # 查看 A到D列,1到4行的数据,相对于一个二维数组
index = 1
for cell in cells:
    print('第{}行'.format(index), end=' ')
    for i in range(4):
        print(cell[i].value, end=' ')
    print()
    index += 1

print('按行获取sheet数据')

for row in sheet.iter_rows(min_row=1, min_col=1, max_row=4, max_col=3):
    for cell in row:
        print(cell.value, end=" ")
    print()

print('按列获取sheet数据')
for row in sheet.iter_cols(min_row=1, min_col=1, max_row=4, max_col=3):
    for cell in row:
        print(cell.value, end=" ")
    print()

# 按标题读取表格

print(book.get_sheet_names()) # 获取文件所有表格
sheet1 = book.get_sheet_by_name("Sheet")
print(sheet1.title) # 获取当前表格标题
book.close()
  • 一个Workbook对象代表一个Excel文档,因此,在操作一个Excel之前,应该先创建一个Workbook对象。对于创建一个新的Excel文档,直接进行Workbook类调用即可。对于读取一个已有的Excel文档,可以使用openpyxl模块的load_workbook函数。该函数接受多个参数,但只有filename参数为必传参数。filenmame可以是一个文件名,也可以是一个打开的文件对象。
  • 调用完load_workbook函数以后,我们就得到了一个Workbook对象。Workbook对象有很多的属性和方法,其中,大部分方法都与sheet相关。Workbook对象的部分属性如下:
    • active:获取活跃的Worksheet;
    • read_only:是否以read_only模式打开Excel文档;
    • encoding:文档的字符集编码;
    • properties:文档的元数据,如标题,创建者,创建日期等;
    • worksheets:以列表的形式返回所有的Worksheet。
  • Workbook对象的方法大都与Worksheet相关。常用的方法如下:
    • get_sheet_names:获取所有表格的名称;
    • get_sheet_by_name:通过表格名称获取Worksheet对象;
    • get_active_sheet:获取活跃的表格;
    • remove_sheet:删除一个表格;
    • create_sheet:创建一个空的表格;
    • copy_worksheet:在Workbook内拷贝表格。
  • 有了Worksheet对象以后,我们可以通过这个Worksheet对象获取表格的属性,得到单元格中的数据,修改表格中的内容。openpyxl提供了非常灵活的方式来访问表格中的单元格和数据。常用的Worksheet属性如下:
    • title:表格的标题;
    • dimensions表格的大小,这里的大小是指有含有数据的表格大小。例如,对于example.xlsx文件,dimensions属性的值为’A1:E11’;
    • max_row表格的最大行;
    • min_row表格的最小行;
    • max_column表格的最大列;
    • min_column表格的最小列;
    • rows按行获取单元格(Cell对象);
    • columns按列获取单元格(Cell对象);
    • freeze_panes冻结窗格;
    • values按行获取表格的内容(数据)。
  • 下面是Worksheet常用的一些方法:
    • iter_rows:按行获取所有单元格(Cell对象);
    • iter_columns:按列获取所有的单元格;
    • append:在表格末尾添加数据;
    • merged_cells:合并多个单元格;
    • unmerge_cells:移除合并的单元格。 iter_rows方法和iter_columns方法在参数取默认值时,与rows属性和columns属性的作用相同。区别在于,iter_rows方法和iter_columns方法可以通过函数参数限定访问表格的范围。 从Worksheet的属性和方法的使用中可以看到,很多属性和方法返回的不是某一个具体的数值,而是一个Cell对象。一个Cell对象就代表一个单元格,我们可以直接使用Excel坐标的方式获取Cell对象,也可以使用Worksheet的cell方法获取Cell对象。
  • Cell对象比较简单,其常用的属性如下:
    • row:单元格所在的行;
    • column:单元格所在的列;
    • value:单元格的取值;
    • cordinate:单元格的坐标。

使用openpyxl修改Excel文档

使用Python操作PDF文档

PDF(Portable Document Format)是一种便携式文档格式,这种文档格式与操作系统平台无关。PDF文件无论是在Windows,Unix还是在苹果公司的Mac OS操作系统中都是通用的,这一特点使它成为在Internet上进行电子文档发行和数字化信息传播的理想文档格式。虽然PDF便于传输和阅读,但是,编辑PDF却很不容易。

PyPDF2

PyPDF2是一个纯Python的开源库,能够分割或合并PDF文件,也可以裁剪或转换PDF文件中的页面。我们还可以使用PyPDF2查看PDF文件的元信息,对PDF文件进行加密,破解PDF文件的密码等。

Search

    微信好友

    博士的沙漏

    Table of Contents