利用python处理excel文件并可视化处理-利用 Python 处理 Excel 文件

使用场景

日常办公的大多数场景都可能和数据打交道,此时我们第一个想到的便可能是 Excel,方便,简洁,拥有各种集合在一起的功能,相对而言其学习成本低一些。但对于一些专业性较强的行业来说,可能打开一个表格文件的时间已经可以喝一杯咖啡了,此时如果我们会使用脚本语言来处理文件,在时效上要快得多,本文将展示利用 openpyxl 来处理 excel 文件的功能,并且会结合一个小例子给出具体分析。

功能展示

基本准备工作

首先是 openpyxl 的安装,查看 python 的官方网站,我们可以用 pip 安装:

pip install openpyxl

当然如果你用的是 Python 3,也可以这样:

pip3 install openpyxl

安装好 openpyxl 库后,我们可以新建一个 .py 文件,并做好一些初始化的准备:from openpyxl import load_workbook

import datetime

kaggleData = "Your_Excel_file_path" # 此处需要替换为你自己电脑上相应 excel 文件的位置

wb = load_workbook(filename=kaggleData,read_only=True) # 请注意,如果只是读取文件,尽量把 read_only 这个参数设置为 True,这对于较大的 excel 文件来说会有很大的性能提升

sheetNames = wb.sheetnames # 这将返回表格的所有表单名称,以列表形式

写入一个 Excel 文件

读取一个 Excel 文件的工作表,工作薄,每行每列及每个单元格

读取一个 Excel 文件的工作簿"""读取每个工作表的名字,最大最小的行和列"""

def sheetRange(sheetName):

minRow = sheetName.min_row

minCol = sheetName.min_column

maxRow = sheetName.max_row

maxCol = sheetName.max_column

rowRange = 0

columnRange = 0

if minRow >= 1:

rowRange = maxRow - minRow + 1

if minCol >= 1:

columnRange = maxCol - minCol + 1

print(sheetName.title + " rowRange: " + str(rowRange) + ",columnRange: " + str(columnRange))

读取某个指定的行

对于数据的提取,有时可能需要用到某个指定的行,可以按照下面的方法操作:def typicalRow(sheetName,RowNumber): # sheetName 是工作簿的名字,RowNumber 是指要读取的指定行

rowList = []

minRow = sheetName.min_row

minCol = sheetName.min_column

maxRow = sheetName.max_row

maxCol = sheetName.max_column

"""以下是一些简单的保护代码,在实际操作时可能要考虑到更具体的意外情况"""

if maxRow < 1:

errorMessage = sheetName.title + " 没有内容”

print(errorMessage)

elif RowNumber not in range(minRow,maxRow+1):

errorMessage = "您要查找的第 " + str(RowNumber) + " 行超出工作表范围”

print(errorMessage)

else:

for column in range(minCol,maxCol+1):

cell = sheetName.cell(RowNumber,column)

rowList.append(cell.value)

if len(rowList):

return rowList

读取某个指定的列

就像刚才提到的,有时需要读取某个指定的列,可参考下面的方法:def typicalColumn(sheetName,ColumnNumber):

columnList = []

minRow = sheetName.min_row

minCol = sheetName.min_column

maxRow = sheetName.max_row

maxCol = sheetName.max_column

if maxCol < 1:

errorMessage = sheetName.title + " 没有内容”

print(errorMessage)

elif ColumnNumber not in range(minCol,maxCol+1):

errorMessage = "您要查找的第 " + str(ColumnNumber) + " 列超出工作表范围”

print(errorMessage)

else:

for row in range(minRow,maxRow+1):

percentProcess = "{:.2%}’.format(row/maxRow) # 测试的文件有太多行,加入这一段代码显示进度

message = "正在获取 " + sheetName.title + " 中的第 " + str(row) + " 行第 " + str(ColumnNumber) + " 列数据,共 " + str(maxRow) + "行,进度为 " + str(percentProcess)

print(message,end=" ")

cell = sheetName.cell(row,ColumnNumber)

columnList.append(cell.value)

if len(columnList):

return columnList

案例分析

自己用 Faker 库创建一些数据写入表格

To be Continued…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值