当前位置: 首页 > 后端技术 > Python

PyQt5批量删除Excel重复数据,删除多个文件,一键自定义重复项...

时间:2023-03-26 11:44:29 Python

说明:去重单个或多个Excel文件数据,可自定义去重列。[阅读全文]在开始源码说明之前,我先说明一下这个工具的使用过程。1、准备好需要去重的数据文件。2.使用工具进行去重操作。3.处理后的结果文件。PyQt5界面UI相关模块引用fromPyQt5.QtWidgetsimport*fromPyQt5.QtGuiimport*corecomponentfromPyQt5.QtCoreimport*themestylemodulereferencefromQCandyUiimportCandyWindow本应用中使用了一个默认的杨模块QCandyUi,可以changed整个应用的主题色设计不需要修改每个控件的样式。一个缺点就是应用本身设置的标题和应用图标是不能生效的,必须使用这个样式控件CandyWindow来修改,如下图,我们需要把自己写的UI空间放进去。#w=CandyWindow.createWindow(EDataDel(),theme='blueGreen',title='Excel批量去重设备公众号:【Python集中营】',#ico_path='Datadeduplication.ico')#w.show()应用操作相关模块importsysimportosExcel数据处理模块importpandasaspdimportopenpyxlaspxlUI界面布局设计,信号量槽函数绑定实现类EDataDel(QWidget):def__init__(self):super(EDataDel,self)。__init__()self.init_ui()definit_ui(self):self.brower=QTextBrowser()self.brower.setReadOnly(True)self.brower.setFont(QFont('微软雅黑',8))self.brower.setPlaceholderText('处理显示区域...')self.brower.ensureCursorVisible()form=QFormLayout()self.file_paths=QLineEdit()self.file_paths.setReadOnly(True)self.file_paths_btn=QPushButton()self.file_paths_btn.setText('加载批处理文件')self.file_paths_btn.clicked.connect(self.file_paths_btn_click)self.colums_label=QLabel()self.colums_label.setText('自定义去重列')self.colums_text=QLineEdit()self.colums_text.setPlaceholderText('列名1,列名2,列名3,...')form.addRow(self.file_paths,self.file_paths_btn)form.addRow(self.colums_label,self.colums_text)self.work=DataWork(self)self.work.trigger.connect(self.update_log)self.work.finished.connect(self.finished)vbox=QVBoxLayout()self.start_btn=QPushButton()self.start_btn.setText('开始执行')self.start_btn.clicked.connect(self.start_btn_click)vbox.addLayout(form)vbox.addWidget(self.start_btn)hbox=QHBoxLayout()hbox.addWidget(self.brower)hbox.addLayout(vbox)self.setLayout(hbox)deffile_paths_btn_click(self):paths=QFileDialog.getOpenFileNames(self,'选择文件',os.getcwd(),'Excel文件(*.xlsx)')files=paths[0]path_strs=''forfileinfiles:path_strs=path_strs+file+';'self.file_paths.setText(path_strs)ifself.file_paths.text().strip()!='':self.update_log('批处理文件路径已加载!')else:self.update_log('未选择文件!')defsave_dir_btn_click(self):directory=QFileDialog.getExistingDirectory(self,'SelectFolder',os.getcwd())self.save_dir.setText(directory)defupdate_log(self,text):cursor=self.brower.textCursor()游标.movePosition(QTextCursor.End)self.brower.append(text)self.brower.setTextCursor(cursor)self.brower.ensureCursorVisible()defstart_btn_click(self):self.start_btn.setEnabled(False)self.work.start()deffinished(self,finished):如果finished为True:self.start_btn.setEnabled(True)创建子线程,处理业务逻辑(清理Excel重复文件)classDataWork(QThread):trigger=pyqtSignal(str)finished=pyqtSignal(bool)def__init__(self,parent=None):super(DataWork,self).__init__(parent)self.parent=parentself.working=Truedef__del__(self):self.working=Falseself.wait()defrun(self):self.trigger.emit('启动批量处理子线程序...')file_paths=self.parent.file_paths.text().strip()colums_text=self.parent.colums_text.text().strip()colums=[]if','incolums_text:colums=colums_text.split(',')else:列。append(colums_text)self.trigger.emit('获取配置项完成!')forfileinfile_paths.split(';'):iffile.strip()!='':web_sheet=pxl.load_workbook(file)sheets=web_sheet.sheetnamesprint(file)new_file=file.split('.')[0]+'_已去重.'+file.split('.')[1]print(new_file)writer=pd.ExcelWriter(new_file)forsheetinsheets:sheet_name=sheet.title()print(sheet_name)self.trigger.emit('准备处理工作表名称:'+str(sheet.title()))data_frame=pd.read_excel(file,sheet_name=sheet_name)print(data_frame)repe=data_frame.duplicated(subset=colums)repe=repe[repe]print(data_frame.iloc[repe.index])res=data_frame.drop_duplicates(subset=colums)打印(res)self.trigger.emit(str(sheet.title())+':cleared')res.to_excel(writer,sheet_name,index=False)writer.save()else:self.trigger.emit('当前文件路径为空,继续...')self.trigger.emit('数据处理完成...')self.finished.emit(True)如果__name__=='__main__':app=QApplication(sys.argv)w=CandyWindow.createWindow(EDataDel(),theme='blueGreen',title='Excel批量去重设备公众号:【Python集中营]',ico_path='Datadeduplication.ico')w.show()sys.exit(app.exec_())【往期精彩】再见XShell,这款中文开源终端命令行工具更帅!Python表情下载器,轻松下载数万表情,拼图无忧...Python自动清理电脑垃圾文件,一键启动...有了jmespath,在python中处理json数据成为一种享受...解锁一门新技能,如何在Python代码中使用表情符号...万能的list列表,python中的栈和队列都靠它了!如何使用pyqt5实现增删改查数据功能...Python批处理自动整理文件,介绍一个文字语音神器,几行代码就可以搞定!新手福利:分享五个免费的Python学习网站,赶紧收藏吧!有趣的控制台玩法:一行代码绘制控制台图像!数据处理小部件:Excel批处理数据文件拆分器/集成器...