最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用PyQt5+Pandas打造一個表格(Excel/CSV)讀取與處理工具

 更新時間:2026年03月18日 08:27:00   作者:小莊-Python辦公  
在日常辦公和數(shù)據(jù)分析中,我們經常需要處理各種?Excel?和?CSV?文件,為了提高工作效率,今天我們將手把手教大家使用?PyQt5?和?Pandas?開發(fā)一款圖形化的表格讀取與處理工具,需要的朋友可以參考下

使用 PyQt5 + Pandas 打造全能的表格(Excel/CSV)讀取與處理工具

在日常辦公和數(shù)據(jù)分析中,我們經常需要處理各種 Excel 和 CSV 文件。無論是進行簡單的數(shù)據(jù)累加、去重,還是復雜的數(shù)據(jù)透 視、批量拆分,傳統(tǒng)的操作往往需要使用 Excel 的復雜函數(shù),或者編寫重復的 Python 腳本。

為了提高工作效率,今天我們將手把手教大家使用 PyQt5Pandas 開發(fā)一款圖形化的表格讀取與處理工具。這款工具不僅支持直接拖拽文件加載,還能實時預覽,并內置了多種常用的數(shù)據(jù)處理功能,非常適合零基礎辦公人員和數(shù)據(jù)分析師使用!

核心功能一覽

我們這款工具內置了以下實用功能:

  1. 智能文件加載:支持點擊按鈕選擇,或直接拖拽單個/多個文件、甚至整個目錄到軟件中,自動識別并合并 Excel (.xls, .xlsx) 和 .csv 文件。
  2. 實時數(shù)據(jù)預覽:加載文件后,主界面會實時顯示數(shù)據(jù)的前 20 行,方便確認數(shù)據(jù)是否正確。
  3. 自定義表頭:遇到表頭不在第一行的數(shù)據(jù)怎么辦?用戶可以自定義表頭所在的行數(shù),工具會自動重新解析數(shù)據(jù)。
  4. 豐富的列操作
    • 快速對指定列進行 累加、計數(shù)
    • 對指定列進行數(shù)據(jù) 去重
    • 按照自定義分隔符將一列 拆分 為多列
  5. 一鍵數(shù)據(jù)透 視:圖形化選擇透 視的索引(Index)、列(Columns)和值(Values),自動執(zhí)行求和透 視并支持一鍵導出結果。
  6. 大文件按行拆分:遇到幾十萬行的大文件處理卡頓?設置“每文件行數(shù)”,一鍵將大文件拆分為多個小文件保存。
  7. 強大的批量修改列功能
    • 全部修改為固定值
    • 在數(shù)據(jù)頭部/尾部添加特定字符
    • 在第 X 個字符后插入特定字符
  8. 擴展功能:一鍵處理缺失值(如填充0、填充空字符串或直接刪除缺失行),以及一鍵導出當前處理完畢的所有數(shù)據(jù)。

技術棧與依賴

本項目基于 Python 開發(fā),主要用到了以下三個強大的庫:

  • PyQt5:負責構建整個圖形化用戶界面 (GUI),提供了豐富的控件和交互能力。
  • Pandas:負責底層的數(shù)據(jù)讀取、處理和分析,是數(shù)據(jù)處理的“核武器”。
  • openpyxl:Pandas 讀寫新版 Excel (.xlsx) 文件的必備引擎。

安裝依賴

可以通過以下命令一鍵安裝所有所需庫:

pip install PyQt5 pandas openpyxl

核心代碼解析

下面我們來拆解一下這個工具的幾個核心實現(xiàn)點。

1. 拖拽文件與目錄加載功能

為了讓用戶體驗更好,我們繼承 QLabel 自定義了一個 DragDropWidget,用于接收拖拽事件:

class DragDropWidget(QLabel):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.setText("拖拽單個/多個文件或目錄到此處\n(支持 Excel/CSV)")
        self.setAcceptDrops(True)
        self.main_window = parent

    def dragEnterEvent(self, event: QDragEnterEvent):
        # 允許接收包含路徑的文件拖拽
        if event.mimeData().hasUrls():
            event.acceptProposedAction()

    def dropEvent(self, event: QDropEvent):
        urls = event.mimeData().urls()
        paths = [url.toLocalFile() for url in urls]
        # 將獲取到的路徑交給主窗口處理
        self.main_window.handle_dropped_files(paths)

2. Pandas 與 QTableView 聯(lián)動 (數(shù)據(jù)預覽)

要在 PyQt 的 QTableView 中展示 Pandas 數(shù)據(jù)框,我們需要自定義一個 QAbstractTableModel,重寫其行數(shù)、列數(shù)和數(shù)據(jù)返回方法:

class PandasModel(QAbstractTableModel):
    def __init__(self, data):
        super().__init__()
        self._data = data

    def rowCount(self, parent=None):
        return self._data.shape[0]

    def columnCount(self, parent=None):
        return self._data.shape[1]

    def data(self, index, role=Qt.DisplayRole):
        if index.isValid():
            if role == Qt.DisplayRole:
                val = self._data.iloc[index.row(), index.column()]
                return str(val) if not pd.isna(val) else ""
        return None

    def headerData(self, col, orientation, role):
        if orientation == Qt.Horizontal and role == Qt.DisplayRole:
            return str(self._data.columns[col])
        return None

在工具中,我們通過 self.df.head(20) 獲取前 20 行數(shù)據(jù)并傳入該 Model,實現(xiàn)了輕量級的數(shù)據(jù)預覽。

3. 數(shù)據(jù)處理:拆分、去重與透 視

基于 Pandas 的強大功能,我們可以僅用幾行代碼實現(xiàn)復雜的邏輯:

  • 去重self.df = self.df.drop_duplicates(subset=[col])
  • 拆分列new_cols = self.df[col].astype(str).str.split(sep, expand=True)
  • 數(shù)據(jù)透 視
pivot_df = pd.pivot_table(
    self.df, 
    values=val, 
    index=idx, 
    columns=col, 
    aggfunc='sum', 
    fill_value=0
)

4. 字符串的精細批量修改

對于“在第 X 個字符后插入內容”這種需求,我們可以利用 Pandas 的 apply 方法搭配自定義函數(shù)實現(xiàn):

def insert_str(s):
    s_str = str(s)
    if len(s_str) >= pos:
        return s_str[:pos] + val + s_str[pos:]
    return s_str + val

self.df[col] = self.df[col].apply(insert_str)

總結

通過將 PyQt5 和 Pandas 結合,我們打造出了一個功能完備、界面友好的本地數(shù)據(jù)處理利器。這個工具不僅能極大提升我們處理零碎 Excel 文件的效率,更提供了一個很好的學習范例——你可以根據(jù)自己的實際業(yè)務需求,在 main.py 的選項卡中繼續(xù)添加更多自定義的數(shù)據(jù)清洗和分析功能!

快把這份代碼運行起來,讓你的數(shù)據(jù)處理工作從此告別加班吧!

以上就是使用PyQt5+Pandas打造一個表格(Excel/CSV)讀取與處理工具的詳細內容,更多關于PyQt5 Pandas表格讀取與處理的資料請關注腳本之家其它相關文章!

相關文章

  • pandas如何計算移動平均值

    pandas如何計算移動平均值

    在處理金融數(shù)據(jù)分析時,常需計算移動平均值。遇到數(shù)據(jù)不足導致結果為NAN問題,可使用pandas中rolling函數(shù)的min_periods參數(shù)。設置min_periods=1即可解決,它允許窗口中的非空觀測值少于窗口大小時也能計算均值,確保數(shù)據(jù)不足時也能得出結果
    2024-09-09
  • 簡單了解python 郵件模塊的使用方法

    簡單了解python 郵件模塊的使用方法

    這篇文章主要介紹了簡單了解python 郵件模塊的使用方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-07-07
  • Python?jieba庫文本處理詞性標注和關鍵詞提取進行文本情感分析

    Python?jieba庫文本處理詞性標注和關鍵詞提取進行文本情感分析

    這篇文章主要為大家介紹了Python使用中文文本處理利器jieba庫中的詞性標注和關鍵詞提取功能進行文本情感分析實例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-12-12
  • 基于OpenCV與Python實現(xiàn)的身份證號碼識別案例詳解

    基于OpenCV與Python實現(xiàn)的身份證號碼識別案例詳解

    身份證識別技術主要依賴于計算機視覺和圖像處理技術,通過對身份證圖像進行分析,提取關鍵信息(如身份證號碼、姓名等),這篇文章主要介紹了基于OpenCV與Python實現(xiàn)的身份證號碼識別的相關資料,需要的朋友可以參考下
    2026-01-01
  • python+PyQt5 左右聲道測試源代碼

    python+PyQt5 左右聲道測試源代碼

    這篇文章主要介紹了python+PyQt5 左右聲道測試源代碼,左聲道,人機交互測試,點擊右邊聽到的對應序號按鈕,對python左右聲道測試感興趣的朋友一起看看吧
    2024-02-02
  • 你還在@微信官方?聊聊Python生成你想要的微信頭像

    你還在@微信官方?聊聊Python生成你想要的微信頭像

    這篇文章主要介紹了你還在@微信官方?我來教你用Python生成你想要的微信頭像功能,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-09-09
  • Python編程中對文件和存儲器的讀寫示例

    Python編程中對文件和存儲器的讀寫示例

    這篇文章主要介紹了Python編程中對文件和存儲器的讀寫示例,包括使用cPickle儲存器存儲對象的例子,需要的朋友可以參考下
    2016-01-01
  • python缺失值填充方法示例代碼

    python缺失值填充方法示例代碼

    常見的數(shù)據(jù)缺失填充方式分為很多種,比如刪除法、均值法、回歸法、KNN、MICE、EM等,下面這篇文章主要給大家介紹了關于python缺失值填充方法的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-12-12
  • python中tkinter復選框使用操作

    python中tkinter復選框使用操作

    Python Tkinter 復選框用來選取我們需要的選項,它前面有個小正方形的方塊,如果選中則有一個對號,也可以再次點擊以取消該對號來取消選中,下面通過代碼介紹下python中tkinter復選框使用操作,需要的朋友參考下吧
    2021-11-11
  • TFRecord文件查看包含的所有Features代碼

    TFRecord文件查看包含的所有Features代碼

    今天小編就為大家分享一篇TFRecord文件查看包含的所有Features代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02

最新評論

镇原县| 遂川县| 富裕县| 云梦县| 衡阳市| 额济纳旗| 长治县| 革吉县| 大港区| 南城县| 馆陶县| 安乡县| 棋牌| 揭西县| 洛隆县| 宿州市| 奉节县| 灌阳县| 应用必备| 鹿邑县| 渭南市| 长治县| 五河县| 油尖旺区| 磴口县| 望谟县| 大同市| 龙口市| 亚东县| 鹿邑县| 留坝县| 广宗县| 白沙| 沂源县| 天长市| 临海市| 马山县| 兰考县| 九江市| 上蔡县| 长泰县|