打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Python中xlwings和openpyxl的常用方法_xlwings和openpyxl哪个好用
userphoto

2023.06.13 河北

关注

一、前言

实习干了几个项目都涉及Python数据处理,好久没写笔记就写这篇来总结一下,常用的Python处理Excel数据方法吧!主要内容涉及到pandas、xlwings、openpyxl。

二、pandas的一些操作

1、pandas排序

data.sort_values(by='字段名',ascending=False) #数据按“字段名”倒序排列
#ascending=False,倒序排列;True则升序排列
import pandas as pd
data = pd.read_excel(r'C:\Users\86188\Desktop\Python数据挖掘与数据分析\test.xls')
data.sort_values(by='总分',ascending=False)


data.sort_values(by='总分',ascending=True)

2、pandas截取行、列的常用操作

1)我个人常用的方法:

切去行
data[0:2]


截取列,或者列的第几行,前几行数据
data['姓名'][-1:]

#截取某列或某些列
data[['姓名','总分']]

2)loc切片的使用

切去行,前三行,因为Python编号是从0开始的
data.loc[0:2]#或data.loc[:2]

截取列,列的第几行数据
data.loc[0:1,('姓名','总分')]

3)iloc的使用

#切去第n``列,用.iloc[:,n]
#切去前n列,用.iloc[:,:n]不包括第n列
data.iloc[:,-1]

data.iloc[:,:-1]

data.iloc[0:1,:-1]

4)按条件筛选

筛选符合条件的数据

用apply和函数的方法,筛选语文大于数学的数据
data[['语文', '数学']].apply(lambdax: x['语文'] > x['数学'], axis=1)

data[data[['语文', '数学']].apply(lambdax: x['语文'] > x['数学'], axis=1)]

5)小结

1、我习惯用的方法更多是利用字段名(列名)进行切片,在代码维护上不算好,中文字段多的时候显得代码累赘,尽量是中文字段名转为英文字段名,或使用iloc切片。
2、主要对行切片用loc方法(对行下标和列名的切片)
3、主要对列切片可以用iloc方法(更多的是列、行下标的切片)

3、pandas的数据拼接操作、交集和差集

data2 = pd.read_excel(r'C:\Users\86188\Desktop\Python数据挖掘与数据分析\test.xls',sheet_name='Sheet2')

1)merge的内连接、外连接,以及按字段合并

#ineer内连接,可以求交集
pd.merge(data,data2,how='inner')
#outer外连接,进行两个数据拼接
pd.merge(data,data2,how='outer')

#按某个字段链接
data和data2中语文成绩相同的两个人的名字和其他科目数据
pd.merge(data,data2,on='语文')

pd.concat([data,data2])

添加一行数据
data2 = data2.append({'姓名':'嬴政','语文':'99','数学':'100','英语':'0','总分':'199'}, ignore_index=True)

删除交集,得到差集
#先增加一条重复的数据

然后得到交集
drop_duplicates(keep=False)重复的不保存,如果keep='first’保留第一个,last则保留最后一个
pd.concat([data,data2]).drop_duplicates(keep=False)

三、xlwings对Excel的操作

xlwings的强大不用我多说吧,xls和xlsx操作都支持,app调用能支持wps、Excel,就是调用wps不容易。支持xls和xlsx,能读能写,对单元格操作、按行写入,按列写入,最主要的是xlwings的api接口较多,能对Excel做很多操作。我主要讲一些我用到的简单操作:

1)xlwings打开并写入的框架

import xlwings as xw
#visible=False也就是不显示Excel的操作,add_book=False就是不增加新的工作簿
app = xw.App(visible=False,add_book=False)
#打开表格test.xls
wb = app.books.open('test.xls')
#增加新建一个工作簿
wb = app.books.add('test.xls')
#增加一个sheet
sheet = wb.sheets.add('123')
#不增加直接读取:
sheet = wb.sheets['Sheet']
#记得保存写入内容,不然白给
wb.save()
#这个关不关闭影响不大,因为最后app退出就好像我们平常直接关闭关闭浏览器,同时关闭所有页面一样,不一定需要先关闭一个个页面再关闭浏览器
wb.close()
app.quit()
#当excel正常退出不容易的时候可以用kill()直接杀死进程 app.kill()

2)写入单元格、写入列、写入行

#pandas读取后的数据怎么用xlwings写入
#其实没有很复杂,很简单和单元格写入一样
sheet.range('A1').value = data``#代表着从A1单元格开始写入data的数据
因为一般来说,一个单元格就写入一个数据,并不会写入一个列表
#当你需要写入一个数据时也是用这个方法
sheet.range('A1').value = 'lision'
写入一行数据:
sheet.range('A1').options(transpose=False).value = ['姓名','语文','数学','英语','总分']
写入一列数据:(注意你写入的数据需要是一个列表,然后开始格是A2,一直默认写到结束)
sheet.range('A2').options(transpose=True).value = data['姓名'].tolist()
#或者
sheet.range('A2').value = data['姓名'].tolist()
如果你想在一个范围内写,则
sheet.range('A2:A15').options(transpose=True).value = data['姓名'].tolist()

3)其他参考学习链接:

xlwings创建工作表
xlwings的操作
xlwings改样式

4)小结:

1、xlwings功能强大,操作方便可以使用
2、xlwings按行写入、按列写入不需要循环,执行速度是比较快的
3、xlwings支持挺多api的接口,读者们可以自行搜索研究一下
4、xlwings写入后记得保存和关闭app,不然再跑的时候跑出bug
5、再写入一个文件的时候记得先把文件关闭,不要打开着。

四、openpyxl对Excel的操作

openpyxl只支持对xlsx文件的操作,不支持xls,也是很好用的。

1)打开Excel文件、写入pandas的数据

方法一(适用于新建文件(工作簿),新建表格写入):
#导入openpyxl库的Workbook函数
from openpyxl import Workbook
fromopenpyxl.utils.dataframeimportdataframe_to_rows
book = Workbook()
sheet = book.active
#这种写入行的方法适合pandas读取的数据data
for row in dataframe_to_rows(data,index=False,header=True):
sheet.append(row)
sheet.title = '终极8班'
book.save('.\test\班级成绩情况.xlsx')
方法二(适用于知道表格,追加写入、修改):
import openpyxl
wb = openpyxl.load_workbook('test.xlsx')
sheet1 = wb.get_sheet_by_name("Sheet1")
#获取最大行数:
rows = sheet1.max_row
#获取最大列数
cols = sheet1.max_column
#写入行的方法
for row in range(1,10):
for col in range(1,4):
sheet1.cell(row,col).value = f'{row},{col}'
#写入单元格
sheet1.cell(rows+1, 1).value = '周瑜'
wb.save('.\test\班级成绩情况.xlsx')
方法二还有一个方式写入pands的数据,是直接用pandas处理后的数据写入的
import openpyxl
import pandas as pd
book = openpxl.load_workbook('test.xlsx')
writer = pd.ExcelWriter('test.xlsx', engine='openpyxl')
writer.book = book
#写入数据
data.to_excel(writer,sheet_name="终极8班",index=False)
writer.save()

2)设置单元格样式

#导入库的函数
fromopenpyxl.stylesimportAlignment
#居中样式
align=Alignment(horizontal='center',vertical='center')
#设置高度,设置宽度就是把height换成weight就好啦,单位是磅哦
sheet_name.row_dimensions[rows+1].height = 50.15
#(1,1)这个单元格调用上面居中的align
sheet_name.cell(1,1).alignment = align
sheet_name.cell(1,1).value = "亚索"

3)其他参考学习链接:

openpyxl单元格内容居中
openxl设置行高、行宽

4)小结:

1、openpyxl对于xlsx文件的操作是很舒服的,简单方便,但是缺点就是只能xlsx格式,所以在调用openpyxl的时候,记得检查一下你的文件格式
2、openpyxl对表格操作完毕后记得save,保存一下

五、os对文件夹的常用操作

1)查看该路径下的文件

import os
filePath = r'D:\Python数据挖掘与数据分析'
#这个时候取出来的是一个文件名列表,对于单独的文件(文本文件、表格、压缩包这些)是有后缀的,文件夹是没有后缀的
fileNames = os.listdir(filePath)
#需要遍历列表输出才有
for filename in fileNames:
print(filename)

1、找目标文件怎么找
#可以用re正则库的正则表达式寻找
import re #导入re正则库
obj = re.compile('(.*?).csv')
for filename in fileNames:
#match是判断该文本是否与模板obj匹配,不匹配则为false
if obj.match(filename):
print(filename)

2、提取某后缀文件的文件名(.csv)
#和上面的基本一样,做个细微的字符串提取就好啦
import re #导入re正则库
obj = re.compile('(.*?).csv')
for filename in fileNames:
#match是判断该文本是否与模板obj匹配,不匹配则为false
if obj.match(filename):
#str.split('.')按"."分割字符串,原来的字符串变成了列表,列表第一个元素就是文件名
print(filename.split('.')[0])

3、判断该路径是否存在某文件
if os.path.exists('D:\Python数据挖掘与数据分析\wenshi.csv'):
print("文件存在")
在这里插入图片描述

2)重命名

#rename不仅可以重命名还可以更改文件的格式,从csv该到xlsx
os.rename('D:\Python数据挖掘与数据分析\wenshi.csv','D:\Python数据挖掘与数据分析\wenshi.xlsx')

3)删除文件

用remove函数
os.remove('D:\Python数据挖掘与数据分析\del.xls')

4)复制文件

本人也是用shutil复制文件的
import shutil
#也是可以改变文件格式和名字的,注意权限问题,就是他不能简单地写入c盘(一般受限制)
shutil.copy('D:\Python数据挖掘与数据分析\wenshi.xlsx','C:\Users\86188\Desktop\wenshi.csv')

os、shutil移动、复制文件

5)其他参考链接:

os的文件操作

6)插一个解压zip文件的方法在这吧

import zipfile
zipname = 'wenshi.zip'
with zipfile.ZipFile(filePath+'/'+zipname) as zf:
#读取zip里面文件的文件名,生成一个列表,列表内的文件名包括文件后缀哦
sname = zf.namelist()
#extractall是解压到filePath路径的方法
zf.extractall(path=filePath)

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
史上最全Python 操作 Excel库总结!
除了VBA,还有哪些编程语言可以操作Excel文件?
Python读写Excel文件第三方库汇总,你想要的都在这儿!
Pandas向本地Excel已存在的工作表追加写入DataFrame
超全整理|Python 操作 Excel 库 xlwings 常用操作详解!
Python读写EXCEL文件常用方法大全
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服