目录使用 PyQt5 Pandas 打造全能的表格(Excel/CSV)读取与处理工具 核心功能一览️ 技术栈与依赖安装依赖 核心代码解析1. 拖拽文件与目录加载功能2. Pandas 与 QTableView 联动 (数据预览)3. 数据处理拆分、去重与透视4. 字符串的精细批量修改 总结专栏导读 欢迎来到Python办公自动化专栏—Python处理办公问题解放您的双手️ 个人博客主页请点击—— 个人的博客主页 求收藏️ Github主页请点击—— Github主页 求Star⭐️ 知乎主页请点击—— 知乎主页 求关注️ CSDN博客主页请点击—— CSDN的博客主页 求关注 该系列文章专栏请点击——Python办公自动化专栏 求订阅 此外还有爬虫专栏请点击——Python爬虫基础专栏 求订阅 此外还有python基础专栏请点击——Python基础学习专栏 求订阅文章作者技术和水平有限如果文中出现错误希望大家能指正❤️ 欢迎各位佬关注 ❤️使用 PyQt5 Pandas 打造全能的表格(Excel/CSV)读取与处理工具在日常办公和数据分析中我们经常需要处理各种 Excel 和 CSV 文件。无论是进行简单的数据累加、去重还是复杂的数据透视、批量拆分传统的操作往往需要使用 Excel 的复杂函数或者编写重复的 Python 脚本。为了提高工作效率今天我们将手把手教大家使用PyQt5和Pandas开发一款图形化的表格读取与处理工具。这款工具不仅支持直接拖拽文件加载还能实时预览并内置了多种常用的数据处理功能非常适合零基础办公人员和数据分析师使用完整代码点我直达 核心功能一览我们这款工具内置了以下实用功能智能文件加载支持点击按钮选择或直接拖拽单个/多个文件、甚至整个目录到软件中自动识别并合并 Excel (.xls,.xlsx) 和.csv文件。实时数据预览加载文件后主界面会实时显示数据的前 20 行方便确认数据是否正确。自定义表头遇到表头不在第一行的数据怎么办用户可以自定义表头所在的行数工具会自动重新解析数据。丰富的列操作快速对指定列进行累加、计数对指定列进行数据去重按照自定义分隔符将一列拆分为多列一键数据透视图形化选择透视的索引Index、列Columns和值Values自动执行求和透视并支持一键导出结果。大文件按行拆分遇到几十万行的大文件处理卡顿设置“每文件行数”一键将大文件拆分为多个小文件保存。强大的批量修改列功能全部修改为固定值在数据头部/尾部添加特定字符在第 X 个字符后插入特定字符扩展功能一键处理缺失值如填充0、填充空字符串或直接删除缺失行以及一键导出当前处理完毕的所有数据。️ 技术栈与依赖本项目基于 Python 开发主要用到了以下三个强大的库PyQt5负责构建整个图形化用户界面 (GUI)提供了丰富的控件和交互能力。Pandas负责底层的数据读取、处理和分析是数据处理的“核武器”。openpyxlPandas 读写新版 Excel (.xlsx) 文件的必备引擎。安装依赖可以通过以下命令一键安装所有所需库pipinstallPyQt5 pandas openpyxl 核心代码解析下面我们来拆解一下这个工具的几个核心实现点。1. 拖拽文件与目录加载功能为了让用户体验更好我们继承QLabel自定义了一个DragDropWidget用于接收拖拽事件classDragDropWidget(QLabel):def__init__(self,parentNone):super().__init__(parent)self.setText(拖拽单个/多个文件或目录到此处\n(支持 Excel/CSV))self.setAcceptDrops(True)self.main_windowparentdefdragEnterEvent(self,event:QDragEnterEvent):# 允许接收包含路径的文件拖拽ifevent.mimeData().hasUrls():event.acceptProposedAction()defdropEvent(self,event:QDropEvent):urlsevent.mimeData().urls()paths[url.toLocalFile()forurlinurls]# 将获取到的路径交给主窗口处理self.main_window.handle_dropped_files(paths)2. Pandas 与 QTableView 联动 (数据预览)要在 PyQt 的QTableView中展示 Pandas 数据框我们需要自定义一个QAbstractTableModel重写其行数、列数和数据返回方法classPandasModel(QAbstractTableModel):def__init__(self,data):super().__init__()self._datadatadefrowCount(self,parentNone):returnself._data.shape[0]defcolumnCount(self,parentNone):returnself._data.shape[1]defdata(self,index,roleQt.DisplayRole):ifindex.isValid():ifroleQt.DisplayRole:valself._data.iloc[index.row(),index.column()]returnstr(val)ifnotpd.isna(val)elsereturnNonedefheaderData(self,col,orientation,role):iforientationQt.HorizontalandroleQt.DisplayRole:returnstr(self._data.columns[col])returnNone在工具中我们通过self.df.head(20)获取前 20 行数据并传入该 Model实现了轻量级的数据预览。3. 数据处理拆分、去重与透视基于 Pandas 的强大功能我们可以仅用几行代码实现复杂的逻辑去重self.df self.df.drop_duplicates(subset[col])拆分列new_cols self.df[col].astype(str).str.split(sep, expandTrue)数据透视pivot_dfpd.pivot_table(self.df,valuesval,indexidx,columnscol,aggfuncsum,fill_value0)4. 字符串的精细批量修改对于“在第 X 个字符后插入内容”这种需求我们可以利用 Pandas 的apply方法搭配自定义函数实现definsert_str(s):s_strstr(s)iflen(s_str)pos:returns_str[:pos]vals_str[pos:]returns_strval self.df[col]self.df[col].apply(insert_str) 总结通过将 PyQt5 和 Pandas 结合我们打造出了一个功能完备、界面友好的本地数据处理利器。这个工具不仅能极大提升我们处理零碎 Excel 文件的效率更提供了一个很好的学习范例——你可以根据自己的实际业务需求在main.py的选项卡中继续添加更多自定义的数据清洗和分析功能快把这份代码运行起来让你的数据处理工作从此告别加班吧结尾希望对初学者有帮助致力于办公自动化的小小程序员一枚希望能得到大家的【❤️一个免费关注❤️】感谢求个 关注 ❤️ 喜欢 ❤️ 收藏 此外还有办公自动化专栏欢迎大家订阅Python办公自动化专栏此外还有爬虫专栏欢迎大家订阅Python爬虫基础专栏此外还有Python基础专栏欢迎大家订阅Python基础学习专栏
PyQt5 + Pandas 打造常见的表格(Excel/CSV)读取与处理工具
目录使用 PyQt5 Pandas 打造全能的表格(Excel/CSV)读取与处理工具 核心功能一览️ 技术栈与依赖安装依赖 核心代码解析1. 拖拽文件与目录加载功能2. Pandas 与 QTableView 联动 (数据预览)3. 数据处理拆分、去重与透视4. 字符串的精细批量修改 总结专栏导读 欢迎来到Python办公自动化专栏—Python处理办公问题解放您的双手️ 个人博客主页请点击—— 个人的博客主页 求收藏️ Github主页请点击—— Github主页 求Star⭐️ 知乎主页请点击—— 知乎主页 求关注️ CSDN博客主页请点击—— CSDN的博客主页 求关注 该系列文章专栏请点击——Python办公自动化专栏 求订阅 此外还有爬虫专栏请点击——Python爬虫基础专栏 求订阅 此外还有python基础专栏请点击——Python基础学习专栏 求订阅文章作者技术和水平有限如果文中出现错误希望大家能指正❤️ 欢迎各位佬关注 ❤️使用 PyQt5 Pandas 打造全能的表格(Excel/CSV)读取与处理工具在日常办公和数据分析中我们经常需要处理各种 Excel 和 CSV 文件。无论是进行简单的数据累加、去重还是复杂的数据透视、批量拆分传统的操作往往需要使用 Excel 的复杂函数或者编写重复的 Python 脚本。为了提高工作效率今天我们将手把手教大家使用PyQt5和Pandas开发一款图形化的表格读取与处理工具。这款工具不仅支持直接拖拽文件加载还能实时预览并内置了多种常用的数据处理功能非常适合零基础办公人员和数据分析师使用完整代码点我直达 核心功能一览我们这款工具内置了以下实用功能智能文件加载支持点击按钮选择或直接拖拽单个/多个文件、甚至整个目录到软件中自动识别并合并 Excel (.xls,.xlsx) 和.csv文件。实时数据预览加载文件后主界面会实时显示数据的前 20 行方便确认数据是否正确。自定义表头遇到表头不在第一行的数据怎么办用户可以自定义表头所在的行数工具会自动重新解析数据。丰富的列操作快速对指定列进行累加、计数对指定列进行数据去重按照自定义分隔符将一列拆分为多列一键数据透视图形化选择透视的索引Index、列Columns和值Values自动执行求和透视并支持一键导出结果。大文件按行拆分遇到几十万行的大文件处理卡顿设置“每文件行数”一键将大文件拆分为多个小文件保存。强大的批量修改列功能全部修改为固定值在数据头部/尾部添加特定字符在第 X 个字符后插入特定字符扩展功能一键处理缺失值如填充0、填充空字符串或直接删除缺失行以及一键导出当前处理完毕的所有数据。️ 技术栈与依赖本项目基于 Python 开发主要用到了以下三个强大的库PyQt5负责构建整个图形化用户界面 (GUI)提供了丰富的控件和交互能力。Pandas负责底层的数据读取、处理和分析是数据处理的“核武器”。openpyxlPandas 读写新版 Excel (.xlsx) 文件的必备引擎。安装依赖可以通过以下命令一键安装所有所需库pipinstallPyQt5 pandas openpyxl 核心代码解析下面我们来拆解一下这个工具的几个核心实现点。1. 拖拽文件与目录加载功能为了让用户体验更好我们继承QLabel自定义了一个DragDropWidget用于接收拖拽事件classDragDropWidget(QLabel):def__init__(self,parentNone):super().__init__(parent)self.setText(拖拽单个/多个文件或目录到此处\n(支持 Excel/CSV))self.setAcceptDrops(True)self.main_windowparentdefdragEnterEvent(self,event:QDragEnterEvent):# 允许接收包含路径的文件拖拽ifevent.mimeData().hasUrls():event.acceptProposedAction()defdropEvent(self,event:QDropEvent):urlsevent.mimeData().urls()paths[url.toLocalFile()forurlinurls]# 将获取到的路径交给主窗口处理self.main_window.handle_dropped_files(paths)2. Pandas 与 QTableView 联动 (数据预览)要在 PyQt 的QTableView中展示 Pandas 数据框我们需要自定义一个QAbstractTableModel重写其行数、列数和数据返回方法classPandasModel(QAbstractTableModel):def__init__(self,data):super().__init__()self._datadatadefrowCount(self,parentNone):returnself._data.shape[0]defcolumnCount(self,parentNone):returnself._data.shape[1]defdata(self,index,roleQt.DisplayRole):ifindex.isValid():ifroleQt.DisplayRole:valself._data.iloc[index.row(),index.column()]returnstr(val)ifnotpd.isna(val)elsereturnNonedefheaderData(self,col,orientation,role):iforientationQt.HorizontalandroleQt.DisplayRole:returnstr(self._data.columns[col])returnNone在工具中我们通过self.df.head(20)获取前 20 行数据并传入该 Model实现了轻量级的数据预览。3. 数据处理拆分、去重与透视基于 Pandas 的强大功能我们可以仅用几行代码实现复杂的逻辑去重self.df self.df.drop_duplicates(subset[col])拆分列new_cols self.df[col].astype(str).str.split(sep, expandTrue)数据透视pivot_dfpd.pivot_table(self.df,valuesval,indexidx,columnscol,aggfuncsum,fill_value0)4. 字符串的精细批量修改对于“在第 X 个字符后插入内容”这种需求我们可以利用 Pandas 的apply方法搭配自定义函数实现definsert_str(s):s_strstr(s)iflen(s_str)pos:returns_str[:pos]vals_str[pos:]returns_strval self.df[col]self.df[col].apply(insert_str) 总结通过将 PyQt5 和 Pandas 结合我们打造出了一个功能完备、界面友好的本地数据处理利器。这个工具不仅能极大提升我们处理零碎 Excel 文件的效率更提供了一个很好的学习范例——你可以根据自己的实际业务需求在main.py的选项卡中继续添加更多自定义的数据清洗和分析功能快把这份代码运行起来让你的数据处理工作从此告别加班吧结尾希望对初学者有帮助致力于办公自动化的小小程序员一枚希望能得到大家的【❤️一个免费关注❤️】感谢求个 关注 ❤️ 喜欢 ❤️ 收藏 此外还有办公自动化专栏欢迎大家订阅Python办公自动化专栏此外还有爬虫专栏欢迎大家订阅Python爬虫基础专栏此外还有Python基础专栏欢迎大家订阅Python基础学习专栏