999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Python 的表格數據查找系統設計與實現

2024-12-01 00:00:00江海濤
電腦知識與技術 2024年31期

摘要:隨著信息化的發展,數據存儲變得更加靈活多樣,數據處理的需求也日益增長。在兩個數據表格間進行數據匹配查找時,常規方法是采用VLOOKUP()等關聯匹配類函數。然而,當表格數量較多、操作頻繁時,這種方式效率較低。為解決這一問題,文章基于Python語言,利用pandas、PyQt5等生態庫,設計了一套表格數據自動化查找系統。該系統大大提高了數據查找、對比、提取的效率和準確性,降低了從業人員的工作強度。

關鍵詞:Python;PyQt5;pandas;表格數據對比;數據查找

中圖分類號:TP311 文獻標識碼:A

文章編號:1009-3044(2024)31-0051-03

開放科學(資源服務)標識碼(OSID) :

0 引言

在表格數據查找應用中,傳統方式是使用VLOOKUP()等關聯匹配函數[1-2]。低頻操作時,這是一種高效的處理方式。但當文件數量多且操作頻繁時,大量調用匹配函數和設置參數會降低效率。為解決上述問題,本文基于Python及其生態庫,開發了一款靈活、友好的表格數據查找系統。該系統能夠快速實現跨表數據查找和目標數據提取。

1 技術方案簡介

本系統采用Python編程環境實現基本邏輯處理,通過pandas庫讀取表格數據,再利用PyQt5開發GUI (圖形用戶界面)進行數據展示及人機交互。技術架構如圖1所示:

Python是一種跨平臺、開源、免費的解釋型高級編程語言,功能強大。它能夠輕松地將其他語言制作的模塊聯結在一起,在Web編程、圖形處理、大數據處理、科學計算等領域都有廣泛應用[3-4]。作為數據分析的主要工具之一,pandas是Python環境中用于數據處理和分析的框架庫。該庫為序列數據和表數據的存儲提供了快速、靈活、明確的數據結構,能夠輕松地進行數據的轉換、拆分、合并及變換,已經成為Python中執行高級數據處理的事實標準庫,尤其適用于統計應用分析[5-7]。PyQt5是開發GUI應用程序的開源、跨平臺工具,為Python程序員提供了Qt5框架的全面訪問,具有強大的功能和易用性,尤其利用Qt設計師(Qt De?signer) 通過可視化組態可以快速、高效地設計與實現可視化應用程序及界面[8-10]。OS庫,即操作系統接口庫,用于文件及目錄操作。

2 系統設計與實現

2.1 前端GUI 界面設計

利用PyQt5圖形化設計軟件Qt設計師,通過拖、拉、拽等可視化開發方式設計靜態前端GUI界面。該界面主要包括以下元素:

1) 文件1參數配置、操作按鈕;

2) 文件2參數配置、操作按鈕;

3) 文件1、2 特征數據(總行數(Total) 、空行數(Null) 、有效數(Valid) 、匹配行數(Matched) 、不匹配行數(Unmatched)) 顯示;

4) 數據對比(Contrast) 、復制(Copy) 按鈕;

5) 文件1、2上次操作文件目錄;

6) 文件1、2內容顯示表格;

7) 匹配大小寫(Match case) 、總在最前(Always ontop) 功能復選框。

GUI界面預覽圖如圖2所示。

2.2 主程序設計

主程序運行流程如下:

1) 系統啟動后,加載GUI界面;

2) 進行系統初始化,包括:

①GUI初始化參數(Logo、尺寸規則等);

②綁定GUI 元素(按鈕、單行編輯框等)信號槽函數;

③表格控件參數初始化(列數、列寬、選中規則);

④增加表格右鍵菜單‘復制Copy’功能;

⑤預置下拉菜單(列名、表頭(Header) 、編碼(En?coding)) 的可選內容;

⑥初始化系統標志位等。

3) 若系統存在歷史記錄,則從本地磁盤讀取配置文件并顯示到GUI 界面,否則顯示默認GUI 界面。例,獲取文件1上次操作路徑及設置參數的關鍵代碼如下:

# 獲取文件1上次操作路徑及設置參數

with open ('file_path_1.txt','r',encoding='utf-8') as file:

# 讀取內容并驗證合法性

content_list = file.readlines()

if len(content_list) == 7 and '' not in content_list:

# 去除換行符

path = content_list[0].rstrip('\n')

dir_path = os.path.dirname(path)

file_type = os.path.splitext(path)[-1]

# 驗證路徑和文件類型

if os.path.exists(path) and file_type in ['.xls','.xlsx','.csv']:

self.file_opened_1 = 1

self.last_dir_path_1 = dir_path

self.last_file_path_1 = path

# 顯示上次操作的文件路徑到GUI self.le_print_signal. le_print. emit(self. ui. le_path_1, self. last_file_path_1)

# 設置其他參數

self. ui. sbox_sheet_num_1. setValue(int(content_list[1].rstrip('\n')))

self.ui.cbox_col_source.setCurrentText(content_list[2].rstrip('\n'))

self. ui. cbox_header_1. setCurrentText(content_list[3].rstrip('\n'))

self.ui.cbox_encoding_1.setCurrentText(content_list[4].rstrip('\n'))

# 設置復選框狀態

self. ui. cb_on_top. setChecked(content_list[5]. rstrip('\n')=='True')

self. ui. cb_case. setChecked(content_list[6]. rstrip('\n')=='True')

4) 系統開始運行,持續監控GUI信號(如打開(Open) 、重載(Reload) 、對比(Contrast) 按鈕的“點擊”動作、單行編輯框文本輸出動作等)并執行對應槽函數(如打開、重載文件、執行數據查找、數據復制、信息輸出等功能)。

主程序運行流程圖如圖3所示:

2.3 數據讀取及可視化

1) GUI參數設置。

在文件操作界面中設置文件1、2的以下參數:

①Sheet num:工作表編號,從0開始;

②Source col:源列的編號,從A開始;

③Compare col:對比列的編號,從A開始;

④Target col:目標列的編號,從A開始;

⑤Header:數據表頭,可選None(無表頭)或1(表頭在第一行);

⑥Encoding:編碼,可選gbk或utf-8。

2) 數據讀取。

數據讀取有以下三種方式:

①直接打開方式:點擊‘打開(Open) ’按鈕,可瀏覽、打開計算機上的表格數據文件(支持.xls、.xlsx、.csv文件格式);

②記憶打開方式:如果存在歷史操作記錄,可點擊‘重載(Reload) ’按鈕,打開上次操作的文件;

③文件拖拽方式:將文件拖拽到文件操作區域內。

讀取excel文件的代碼為:

df=pd. read_excel(current_file_path, dtype= 'str',sheet_name=sheet_name, usecols=usecol, header=None).squeeze(axis=1)

讀取csv文件的代碼為:

df=pd.read_csv(current_file_path,dtype='str',usec?ols=usecol, header=None, encoding=encode). squeeze(axis=1)

其中,df為存儲數據的變量;pd為Pandas庫的引用縮寫;current_file_path為參數io內容,即文件位置及文件名;dtype為數據類型;sheet_name為數據所在sheet的編號,從0開始;usecols為數據所在列的列名;header為表頭數據所在的行號;encoding為數據編碼格式。

例,兩個數據文件file1.xlsx和file2.xlsx需要進行數據對比和對象提取。文件1包含兩列:A列“序號1”和B列“名稱1”;文件2包含三列:A列“序號2”、B列“名稱2”和C列“注釋2”。文件1、2表格內容如圖4、圖5所示:

系統讀取文件1、文件2數據并顯示到前端GUI 的界面效果如圖6所示:

2.4 數據匹配查找

文件1、2讀取后,點擊‘對比(Contrast) ’按鈕,開始檢查文件1中源列(Source col) 的內容是否存在于文件2的對比列(Compare col) 中(空行不參與對比)。如果存在,修改背景色為綠色,并返回文件2中對應的行號及該行目標列(Target col) 的內容;否則,修改背景色為黃色。如,文件1中B列(源列)第2行單元格內容為“a”,處在文件2中B列(對比列)的第2行,則源列背景色顯示為綠色,“匹配行”顯示為2,“匹配內容”為文件2中該行C列(目標列)單元格的內容“我是小a”;文件1中B列(源列)第18行單元格內容為“海狗”,在文件2中B列(對比例)中不存在,則文件1該單元格背景色為黃色。

對比查找結束后統計非空行的匹配數量(Matched) 和不匹配數量(Unmatched) 。數據對比查找結果如圖7所示:

2.5 其他功能

1) 區分大小寫功能:勾選‘Match case’復選框,則對比過程中區分英文字母的大小寫;否則,不區分大小寫。

2) 總在最前功能:勾選‘Always on top’復選框,則該軟件總運行在桌面其他窗口之上;否則,該軟件將會被后運行的桌面窗口覆蓋。

3) 數據復制功能:選中表格內容后,鼠標右鍵選擇‘復制Copy’或左鍵點擊‘復制(Copy) ’按鈕即可將選中的內容復制到剪貼板,并進一步粘貼到表格文件中。數據復制功能的關鍵代碼如下:

# 數據復制功能

def tbtn_copy_click_job(self):

# 獲取選中的行和列

data = self.ui.tw_1.selectedItems()

data_row_num = len({item.row() for item in data})

if data_row_num == 0:

win32api.MessageBox(0, '未選擇數據!', 'Warn?ing', 262192)

return

data_col_num = int(len(data)/data_row_num)

data = self.ui.tw_1.selectedIndexes()

item_list = [i.data() for i in data]

merge = []

for i in range(data_row_num):

merge. append(item_list[data_col_num*i: data_col_num*(i+1)])

for i in merge:

data = "\t".join(i)

merge[merge.index(i)] = data

result = '\n'.join(merge)

clipboard = QApplication.clipboard()

clipboard.setText(result)

win32api.MessageBox(0, '復制成功!', 'Informa?tion', 262208)

4) 操作日志記錄:保存并顯示上次操作文件的目錄,通過‘重載(Reload) ’按鈕可快速打開。

3 結論

本系統具有出色的通用性和靈活性,通過智能化和可視化的方式,使數據對比更加高效透明。它可廣泛應用于表格數據對比查找的各種場景,大幅提高跨文件數據查找、對比和提取的效率,減輕從業人員的工作負擔,為企業的數據處理工作帶來顯著的效益。

參考文獻:

[1] 司馬碧榮,鄧大政,楊媛.Python在電子表格中數據比對的應用[J].信息與電腦(理論版),2022,34(15):107-111.

[2] 梁林霞.Excel函數在中學班級管理中的應用[J].電腦編程技巧與維護,2022(11):104-106.

[3] 明日科技.Python+Kivy(App開發)從入門到實踐[M].長春:吉林大學出版社,2020:2-10.

[4] 段小手.深入淺出Python機器學習[M].北京:清華大學出版社,2018:19-20.

[5] MCKINNEY W.Python數據分析[M].徐敬一,譯.2版.北京:機械工業出版社,2018:123-1341.

[6] JOHANSSON R.Python 科學計算和數據科學應用:基于NumPy、SciPy和Matplotlib[M].黃強,譯.北京:清華大學出版社,2020:295-3222.

[7] 李慶輝.深入淺出Pandas:利用Python進行數據處理與分析[M].北京:機械工業出版社,2021:9-16.

[8] 張武.基于Pyinstaller+PyQt5的Python打包可視化研究與應用[J].湖南郵電職業技術學院學報,2023,22(4):44-47.

[9] 王維波,栗寶鵑,張曉東.Python Qt GUI與數據可視化編程[M].北京:人民郵電出版社,2019:5-10.

[10] 唐佑輝,許成義,趙云昌.基于PyQt5的水深比對檢測系統在水下地形測量檢查中的應用[J].山東國土資源,2023,39(8):58-62.

【通聯編輯:光文玲】

主站蜘蛛池模板: 国产麻豆精品手机在线观看| 国产亚洲美日韩AV中文字幕无码成人| 国产成人午夜福利免费无码r| 欧美亚洲一区二区三区在线| 国产v欧美v日韩v综合精品| 国产精品白浆无码流出在线看| 国产精品夜夜嗨视频免费视频| 69免费在线视频| 中文毛片无遮挡播放免费| 久久一日本道色综合久久 | 国产熟女一级毛片| 欧美日韩中文国产va另类| 婷婷开心中文字幕| 日韩欧美国产精品| 亚洲精品无码AⅤ片青青在线观看| 亚洲九九视频| 亚洲人成日本在线观看| 一本大道香蕉中文日本不卡高清二区 | 久久女人网| 国产午夜精品鲁丝片| 亚洲人视频在线观看| 国产乱人乱偷精品视频a人人澡| 激情无码视频在线看| 91精品小视频| 青草免费在线观看| 综合社区亚洲熟妇p| 精品综合久久久久久97超人| 欧美乱妇高清无乱码免费| 国产小视频网站| 国产成人亚洲无码淙合青草| 白丝美女办公室高潮喷水视频| 亚洲伊人久久精品影院| 国产呦视频免费视频在线观看| 美女无遮挡拍拍拍免费视频| 亚洲国产91人成在线| 国产国产人免费视频成18| 国产在线八区| 91蝌蚪视频在线观看| 最新亚洲av女人的天堂| 国产精品夜夜嗨视频免费视频 | 久久国产高潮流白浆免费观看| 欧美成人免费一区在线播放| 色综合成人| 日韩欧美91| 99久久免费精品特色大片| 久久精品无码一区二区日韩免费| 99久久性生片| 国模粉嫩小泬视频在线观看| 婷婷色一二三区波多野衣| 色噜噜在线观看| 国产一区二区三区视频| 无码一区中文字幕| 亚洲性一区| 日本欧美午夜| 国产精品综合色区在线观看| 91国内外精品自在线播放| 久久综合色天堂av| 欧美色综合久久| 欧美日韩一区二区三区四区在线观看| 国产成人精彩在线视频50| 四虎影视国产精品| 亚洲免费三区| 日韩在线成年视频人网站观看| 国产精品成人免费视频99| 国产在线视频自拍| 欧美精品v欧洲精品| 亚洲经典在线中文字幕| 久久窝窝国产精品午夜看片| 久久国产精品77777| 日本道综合一本久久久88| 久久亚洲精少妇毛片午夜无码| 996免费视频国产在线播放| 中文字幕一区二区人妻电影| 国产流白浆视频| 色九九视频| 99re经典视频在线| 国产精品天干天干在线观看| 精品国产女同疯狂摩擦2| 激情无码字幕综合| 日本精品αv中文字幕| 有专无码视频| 亚洲精品国偷自产在线91正片|