使用Python对Excel表数据的读取、写入、导出

处理Excel表格时,当数据量较大,或计算较为复杂时,使用python进行数据批量处理更为容易。

关于读取excel表格:
在向编译器中导入excel表格时,我们应当首先导入对应的包,否则极易出现报错、数据导入不成功等问题,当excel导入不成功时,优先考虑对应的包没有安装或为成功引用
具体需要导入的包如下

import books as books
import xlrd
import pandas as pd
import numpy as nd
from openpyxl import load_workbook

其中,pandas是在excel表格读取、数据查看是使用最为简单方便的包。但是在对表格数据进行修改或对空白单元格写入数据时,我认为openpyxl更为方便
使用pandas具体导入excel的流程

books1 = pd.read_excel(r'C:\Users\Lenovo\Desktop\问题2\问题二数据.xlsx',index_col='ID',sheet_name='Sheet1')

其中,books1是我们将excel引入后在后续代码中引用该excel表格时使用的变量名。pd.read_excel()是读取excel表格的函数;r’绝对地址’是我们要读入表格的绝对位置,即表格在那个磁盘哪个文件夹中叫什么,注意xlsx不要省略;index_col是我们用来索引的值,比如你要从上到下遍历200行数据,除了使用row()这种外,最简单的方法便是在表格的最前面添加一列,如我用的’ID’,然后写上1-200,这样方便我们用for循环进行遍历;sheet_name=‘要选择的表的名字’,大多时候,我们的excel表格内存在多个表格,比如Sheet1、Sheet2等,当我们要读取对应表格时,应当在sheet_name后面写上表的名字。
那么,当我们按照上述步骤运行代码后没有报错,那么我们如何检测是否将表格数据导入成功了呢?这个时候,我们可以使用books1.iloc[[i], [j]].values[0][0]来检测表格第i行第j列的数据,对应原表格数据,看是否成功导入。注意,python中下标是从0开始,而excel是从1开始,所以当我们要查找或使用对应单元格数据时,我们应该多次测试,找到对应的行、列表达式。这样我们才能得到自己想要的数据。

#可以通过输出一个数据,检验是否引用正确
print(books1.iloc[[0], [2]].values[0][0])

当我们要对表格具体单元格进行写入或者更改时,我更建议大家使用openpyxl包进行书写,因为pandas我一直没有写入成功,具体使用如下:

from openpyxl import load_workbook
wb = load_workbook(r'C:\Users\Lenovo\Desktop\问题2\问题二数据.xlsx')
sheet = wb.active
sheet.cell(row=i, column=j).value = '要修改成的数值'
wb.save(r'C:\Users\Lenovo\Desktop\问题2\问题二数据.xlsx')

sheet.cell(row=i, column=j)表示我们要对第i行第j列单元格进行修改,同样因为索引值不同,我认为每次使用前都应该多次测试,这样才能避免位置错误。对于load_workbook()与pandas导入是相同的,但是关于如何在excel不同表格之间进行切换,如pandas的sheet_name(),我还不是很清楚,待我了解清楚后在进行填写。wb.save()是我们用来将修改后的表格和数据进行储存的函数,但是对于openpyxl我只会在当前表格进行修改,等我了解如何导出一个新表之后,再来为大家解答。
关于如何不修改原来表的内容,而降修改后的信息保存为另一个表格,这个时候我们用到的是pandas包

df = pd.DataFrame(books1)
df.to_excel(r'C:\Users\Lenovo\Desktop\季度\达标天数.xlsx')

pd.DataFrame(‘我们先前使用的变量名来表示的excel’),接着通过df.to_excel(‘要导出到的绝对位置’)来将修改后的表格进行导出。
关于python对excel的处理,暂时就这么多,等我学到新的内容再来对大家进行分析。
创作不易,欢迎点赞!

  • 15
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值