参考文献:《Python数据分析基础》
前言
尽管Excel工作簿可以包含多个工作表,但有时只需一个工作表中的数据。此外,知道如何分析一个工作表,就很难扩展到分析多个工作表。
创建脚本
#!/usr/bin/env python3
import sys
from xlrd import open_workbook
from xlwt import Workbook
input_file = sys.argv[1]
output_file = sys.argv[2]
output_workbook = Workbook()
output_worksheet = output_workbook.add_sheet('jan_2013_output')
with open_workbook(input_file) as workbook:
worksheet = workbook.sheet_by_name('january_2013')
for row_index in range(worksheet.nrows):
for column_index in range(worksheet.ncols):
output_worksheet.write(row_index, column_index, worksheet.cell_value(row_index, column_index))
output_workbook.save(output_file)
脚本代码注释
from xlrd import open_workbook
from xlwt import Workbook
这两行代码中,第一行导入xlrd模块的open_workbook函数,第二行导入xlwt模块的Workbook函数。
output_workbook = Workbook()
output_worksheet = output_workbook.add_sheet('jan_2013_output')
第一行代码实例化了一个Workbook函数对象,用于将结果输入输出文件。第二行代码通过add_sheet函数,在输出文件中创建了名为‘jan_2013_output’的工作表。
worksheet = workbook.sheet_by_name('january_2013')
这行代码使用sheet_by_name函数,引用输入文件中名为‘january_2013’的工作表。
for row_index in range(worksheet.nrows):
for column_index in range(worksheet.ncols):
output_worksheet.write(row_index, column_index, worksheet.cell_value(row_index, column_index))
在这三行代码中,建立了for循环控制流语句,作用是遍历工作表中的每一个单元格。在这里,小编认为把每一个单元格都看作成坐标更能直观地理解,其本质就是从左到右,从上到下依次进行遍历。在第三行代码中,前面的row_index和column_index,小编认为起到定位的作用。小编在进行实操的过程中,将这两个参数删去了,运行效果如下图:
所以通过这个报错,小编猜测,这两个变量的作用是进行定位,为cell_value函数做铺垫。cell_value函数的作用是返回单元格中的数值。这一行代码连起来,可以解释为,访问输入文件中的相应单元格的数据,在输出文件对应的位置进行定位,最后将数据写入输出文件。
output_workbook.save(output_file)
最后一行代码,保存并关闭输出文件簿。
运行代码
在命令行输入以下命令,然后按回车键:
查看结果
思考
通过观察不难发现,Purchase Date一列并不是与原来一样的格式,但这一列确实是代表着日期,但并没有格式化为日期的形式。所以我们得思考一下,应该如何做呢?