文/謝佳東
近年來,Python編程語言已經成為最受歡迎的程序設計語言之一。自2004年起Python的使用率呈線性增長,不斷受到編程者的歡迎和喜愛。2010年,Python榮膺TIOBE 2010年度語言桂冠;2017年,IEEE Spectrum發布的2017年度編程語言排行榜中,Python位居第1位。2018年至今,Python在TIOBE編程語言排行榜始終保持較好的發展態勢,穩居前五。
Python是一種面向對象、解釋型計算機程序設計語言,語法簡潔而清晰。Python編程語言基于ABC教學語言,且避免了ABC不夠開放的劣勢,加強了Python和其他語言如C、C++和Java的結合性,具有豐富和強大的類庫,能夠把其他編程語言設計的各種模塊(尤其是C、C++)輕松地聯結在一起,因此Python常常被稱為膠水語言。自從20世紀90年代初Python語言誕生至今,它逐漸被廣泛應用于系統任務管理、Web應用程序編程與數據挖掘分析。
Python是一種面向對象、解釋型的腳本語言,同時也是一種功能強大而完善的通用型語言,在可移植性、可擴展性、簡單易學等方面具有一定優勢。Python作為一門解釋型高級語言,因此它具有解釋型語言的運行機制,天生具備跨平臺特性,客戶端平臺只需提供Python解釋器即可運行Python應用程序。Python可擴展性體現為豐富而強大的類庫,這些類庫提供的功能覆蓋了網絡編程、文件I/O、數據庫訪問、數據挖掘、機器學習以及深度學習等應用場景。Python相比Java等其他編程語言,Python編寫的代碼簡單易讀,可操作性強。
Python作為解釋型編程語言,與C、C++、Java等編譯型高級語言相比,除了上述優點之外,在運行速度、源代碼保護等方面具有一定弱勢。目前,Python主要分為兩個版本,即Python 2何Python 3,和Python 2版本相比,Python3版本在語句輸出、編碼、運算和異常等方面做出了一些調整與改進,導致Python 3不一定向下兼容Python 2擴展庫,當然這一問題隨著時間推進,擴展庫版本不斷迭代,已經大幅改善,基本都支持Python 3。本文著重介紹的NumPy、Pandas以及Matplotlib可算計算與會圖庫已完全支持Python 3。
Python編程語言具有系統而豐富的功能擴展庫,其中最為經典的科學計算與數據分析擴展庫主要包括NumPy、Pandas和Matplotlib,它們分別為Python提供了快速數組處理、數值運算以及繪圖等功能。

圖1:Matplotlib官網繪圖示例
NumPy命名的靈感來源于Numerical和Python兩個單詞,顧名思義NumPy是使用Python進行科學計算的基礎軟件包,可以替代MATLAB執行數值積分、微分、內插、外推等數學任務。NumPy主要包含N維數組對象、精密廣播功能函數、強大的線性代數與隨機數功能,提供了大量的庫函數和操作,可以幫助軟件開發人員、數據科學家輕松地進行數值計算。
在實際應用中,NumPy最重要的一個特點是其N維數組對象ndarray進行復雜的科學計算,它是用于存放同類型元素的多維數組,每個元素在內存中都有相同存儲大小的區域,以0為開始下標標記集合中元素的位置索引。ndarray對象可以通過索引或切片來訪問和修改內容,與Python中列表(list)的切片操作類似。ndarray數組對象可以通過slice函數,并設置start、stop及step參數,從原數組中切割出一個新的數組對象。
Pandas是開放源代碼且采用BSD許可的Python擴展庫,為Python編程語言提供高性能、易于使用的數據結構和數據分析工具。Pandas基于Numpy提供的高性能矩陣運算,構建了強大的結構化數據分析工具集,有效的提高了數據清洗、數據挖掘和數據分析應用效率。
在實際應用中,Pandas的核心組件主要包括DataFrame與Series兩個部分。DateFrame是Pandas中的一個表格型的數據結構,包含有一組有序的列,每列可以是不同的值類型,包括數值、字符串、布爾型等。DataFrame即有行索引也有列索引,可以認為其是由Series組成的字典。Series是一種類似于一維數組的對象,是由一組數據以及一組與之相關的數據標簽組成。將Pandas中DataFrame與NumPy中的ndarrya有效結合,可極大地提升科學計算效率。
Matplotlib是一個Python的2D繪圖庫,具備非常強大的繪圖功能,可以繪制線圖、等高線圖、條形圖、直方圖、功率譜、誤差圖、散點圖、3D圖形甚至是圖形動畫等,繪制出的圖形質量級別較高。Matplotlib最新的穩定版本為3.1.1,其具備跨平臺特性,可用于Python腳本、IPython Shell、Jupyter以及Web應用程序。
在實際應用中,Matplotlib通過bar、plot、subplot、legend、scatter、table、imshow、hist等函數繪制各類圖形,官網繪圖示例如圖1所示。
數據挖掘技術在中醫藥領域已經得到了廣泛應用。中醫藥數據分析與挖掘常用的方法有頻數統計分析、關聯規則分析、聚類分析等。在中醫藥數據分析與挖掘過程中,對于研究樣本,常常涉及中藥四氣五味、性味歸經、藥物功效、藥物分類以及中藥用藥頻次的頻數統計分析。為了傳承名老中醫診療治病經驗,探索名老中醫用藥規律,研究人員通常以頻次統計為基礎,結合關聯規則分析、聚類分析方法,以發現名老中醫診療相關疾病的核心處方。
基于Python編程語言中的NumPy、Pandas擴展庫可以完成基本的中醫藥數據頻數統計分析,借助Github上托管的Apriori算法、K-means算法源代碼完成關聯規則與聚類分析,通過Matplotlib將數據統計分析結果以圖表的方式呈現出來,借助Python可以快速的進行中醫藥數據分析。
隨著人工智能技術的發展,Python擴展庫中已經涌現了以谷歌為代表的TensorFlow和以Facebook為代表的PyTorch兩種深度學習框架。TensorFlow現已被各類公司、企業與創業公司廣泛用于自動化工作任務和開發新系統,其在分布式訓練支持、可擴展的生產和部署選項支持方面備受好評。PyTorch簡潔、易于使用、支持動態計算圖且內存使用高效,因此越來越受歡迎。隨著技術的不斷進步,期待中醫藥插上人工智能翅膀,利用深度學習技術進一步挖掘名老中醫診療經驗,為中醫藥發展提供技術支撐。
綜上所述,Python語言是一種簡潔、效率高且易于維護的編程語言。結合NumPy、Pandas、Matplotlib可為科學計算、數據分析結果繪圖提供技術支撐?;赑ython編程語言開發包含頻數統計分析、關聯規則分析、聚類分析的中醫藥數據分析應用,有著類庫豐富、操作簡單、跨平臺、維護簡單等優勢。隨著TensorFlow與PyTorch的不斷發展與完善,Python編程在中醫藥數據分心中的功能將更加強大。