1 系統介紹
DAWorkBench是一款面向科研實驗和工程測試場景的數據可視化分析開源軟件,支持實現數據清洗、信號處理和交互式可視化等功能。系統集成文件IO、數據處理以及可視化交互三大模塊,支持多維數據分析與高質量圖表生成,助力用戶高效完成從數據預處理到結果展示的全流程工作。
作為一款開源軟件,DAWorkBench提供源代碼和開放的插件接口,用戶不僅可以基于軟件進行自由修改,也可根據自身科研或工程需求接入自定義的數據處理算法,實現算法、功能或流程拓展,滿足特定科研和工程項目的個性化需求。
圖 1 DAWorkBench主界面
2 系統架構設計
本系統采用分層架構模式及模塊化設計理念,滿足大規模實測數據綜合處理軟件在數據統一管理、數據處理分析和數據可視化需求,可實現各功能模塊的統一交互界面集成、全過程數據管理、數據可視化等集成功能。系統采用模塊化、插件化的設計思想,系統提供了基礎的功能和接口,所有業務功能由插件提供。
系統采用C++、Python語言和QT界面框架研發。C++語言具有較好的面向對象支持,具有大量的基于C++語言的圖形庫,在圖像渲染、圖形可視化以及并行化支持等方面,C++具有更好的執行效率。Python提供了大量數據處理算法庫,同時具有較強的平臺兼容性。QT是基于C++語言的界面組件庫,可用于快速搭建軟件交互界面。QT具有良好的跨平臺特征,因此,本系統基于QT圖像庫構建軟件界面,可完美的支持Windows和Linux等操作系統。
根據本系統軟件開發需求和技術途徑,軟件總體設計采取三層結構,數據IO管理層、數據處理層和數據可視化層。技術總體架構如下圖所示:
圖 2 DAWorkBench系統架構
(1)數據IO管理層,采用pandas庫常見的數據格式進行交互,支持parquet、pickle等高速二進制文件,也支持excel、csv、txt等常見的數據文件,滿足異構大規模數據的統一管理和維護,同時,依托于C++的高效性,軟件支持億級數據的加載和可視化操作。數據層的接口采用腳本化封裝,對于未來新型數據格式,也可以快速的實現擴展。
(2)數據處理層,是數據處理軟件的核心,本軟件數據層主要有兩個特點,一是高效性、二是靈活性,軟件可以通過可視化界面對超大規模數據進行高效處理,同時預封裝了多種數據處理算法,包括常見的數據清洗算法如:缺失值處理、重復值處理、異常值替換、過濾等,也封裝了pandas庫中dataframe常用的數據處理方法,如實現列的四則運算、條件過濾、排序、數據透視表等等。
本系統采用插件式開發模式,除了預封裝的功能外,也支持新算法的擴展。本文下文將展示,把信號處理常見的算法封裝為插件,實現了傅里葉變換、濾波器算法,用戶也可根據需求,實現短時傅里葉變換、小波變換等常見的信號處理算法。
(3)數據可視化層,主要是基于底層統一的數據結構和算法調用接口,開展軟件用戶界面設計、數據可視化呈現等。軟件的可視化大量采用了MVC模式,能實現億級超大規模的dataframe表格可視化,創新性的使用了model層雙緩存機制,解決了Qt的MVC超大規模(億級行數)表格的渲染效率低的問題,同時在Qwt繪圖庫的基礎上進行了擴展,優化了千萬級數據曲線繪制,多序列數據繪圖,數據窗口縮放,數據顯示設置等。
3 各模塊功能介紹
3.1 數據IO模塊
數據IO模塊負責試驗數據的導入與導出,支持多種數據格式,包括txt、csv、xlsx、parquet、pkl等,具備批量處理能力,確保數據在系統與外部之間高效、準確地交換,為數據分析和可視化提供基礎支撐,同時支持工程文件的讀寫,實現數據的持久化存儲。
3.1.1 數據導入
數據導入功能用于將試驗采集或外部生成的數據導入系統,為后續分析提供數據基礎。用戶可點擊添加數據,在彈出的對話框中選擇導入的文件及格式,即可完成數據的導入。對于txt文件的導入需要設置編碼格式及表頭等信息,對于其他格式的文件可直接自動導入。
圖 3 文件導入對話框
圖 4 txt文件導入設置對話框
3.1.2 數據導出
數據導出功能用于將分析結果或原始數據按需導出,支持導出范圍和內容,便于數據共享、歸檔或進一步處理。用戶可以選擇單個導出和多個導出,單個文件導出當前所激活的數據圖表,多個導出則是導出所有數據圖表。
圖 5 數據導出對話框
工程文件保存功能用于將當前試驗分析過程中的所有關鍵數據、參數設置、圖表配置等整體打包保存為工程文件,便于后續加載、復現分析流程或繼續工作,提升工作效率和數據管理的連續性。
3.1.3 工程文件保存
圖 6 工程文件保存對話框
3.2 數據處理模塊
3.2.1 ?數據清洗模塊
數據清洗主要包括三個方面:缺失值處理,即對缺失數據進行填充或刪除操作,確保數據完整性;異常值處理,針對數據中的異常值進行判斷和處理,以保證后續分析的準確性;重復值處理,則是刪除數據中的重復記錄,避免數據冗余和影響分析結果的偏差。
(1)缺失值刪除
缺失值刪除功能用于自動識別并清除數據中的空值,支持按列或按行處理,確保數據完整性,提升分析結果的準確性和可靠性。
圖 7 缺失值刪除效果圖
(2)缺失值填充
缺失值填充功能用于對數據中的空值進行補全,支持多種填充方式,包括按值填充、前向填充、后向填充等,保持數據結構完整,避免因缺失值影響分析結果。
圖 8 缺失值填充效果圖
(3)重復值刪除
重復值刪除功能用于自動識別并剔除數據中重復的記錄,支持按整行或指定列判斷重復,確保數據唯一性,提升數據質量和分析準確性。
圖 9 重復值刪除效果圖
(4)異常值過濾
異常值過濾功能用于自動識別并剔除數據中的異常值或離群點,主要采用n倍標準差法進行異常值的過濾,確保數據的有效性和分析的準確性。
圖 10 異常值過濾效果圖
3.2.2 信號處理模塊
信號處理模塊是基于系統的獨立插件,通過系統的接口,把數字信號處理的功能進行了封裝,能實現數據分析和數據繪圖。基于系統的插件模式,可以集成更多的數據處理功能。
(1)傅里葉變換
傅里葉變換功能用于將時域信號轉換到頻域,揭示信號的頻率成分,支持快速傅里葉變換算法,實現高效頻譜分析,幫助用戶識別信號中的周期性特征和頻率分布,提升信號處理和分析能力。
圖 11 傅里葉變換結果及參數設置對話框
圖 12 傅里葉變換原始波形及頻域圖像
(2)濾波
濾波功能用于對信號數據進行平滑處理或噪聲抑制,本系統采用巴特沃斯濾波器設計,支持多種濾波操作,包括低通濾波、高通濾波、帶通濾波和帶阻濾波,幫助去除無關干擾,突出有效信號特征,提高數據質量和后續分析的準確性。
圖 13 濾波結果及參數設置對話框
圖 14 濾波原始波形及濾波后波形圖像
3.3 數據可視化模塊
3.3.1 數據圖表交互
數據圖表以表格形式呈現數據,支持大規模數據展示、數據檢索、排序、過濾、聚合和統計等功能,便于用戶快速查看、篩選和整理關鍵數據,為后續分析提供基礎支撐。
(1) 數據圖表可視化
圖 15 數據圖表
(2)數據檢索
數據檢索功能用于快速定位和查詢目標數據,幫助用戶高效從海量數據中檢索到所需信息,提高數據訪問速度和分析效率。
圖 16 數據檢索對話框
(3)數據排序
數據排序功能用于按照指定列對數據進行升序或降序排列,方便用戶快速組織和查看數據,提升數據瀏覽和分析的便捷性。
圖 17 數據排序對話框及效果
(4)數據過濾?
數據過濾功能用于根據用戶設定的條件篩選數據,用戶可選擇過濾的列數據及區間,幫助排除不需要的記錄,突出重點信息,提高數據分析的針對性和效率。
圖 18 數據過濾對話框及效果
(5)數據聚合
數據聚合主要以數據透視表的形式體現,用于對大量數據進行動態匯總和多維度分析,支持按行、列進行分類分組,計算合計、平均值等統計指標,幫助用戶快速發現數據規律和關鍵特征,提升數據解讀和決策能力。
圖 19 數據透視表對話框及效果
(6)數據統計
數據統計功能用于對數據集進行常用統計量的計算,支持均值、中位數、方差、標準差、最大值、最小值等指標,幫助用戶快速了解數據分布和特征,輔助深入分析和判斷。
圖 20 數據統計效果
3.3.2 數據圖像交互
數據圖像交互包含多種圖像的繪制,包括折線圖、散點圖、柱狀圖、箱型圖、譜圖等,同時支持圖形參數設置,幫助用戶更直觀地觀察數據趨勢、分布特征等。
圖 21 折線圖
圖 22 散點圖
圖 23 柱狀圖
圖 24 箱型圖
圖 25 譜圖
源碼下載地址:https://github.com/czyt1988/data-workbench