序
本書是筆者用Python語言 (底下簡稱為Python) 所撰寫的第3本書。本書的內容應該也可以用R語言撰寫,不過後者的程式碼可能會更繁雜。R語言的主要功能是統計分析,但是就 「資料處理」 而言,Python可能更適合。筆者有幸能同時接觸Python與R語言,並且也見識到二種程式語言的威力。Python與R語言的確讓人印象深刻,其特色是二者背後皆有強大的 「模組」 或 「程式套件」 支援;因此,若有新的程式語言能凌駕於Python或R語言之上,其前提是該程式語言必須也能同時提供龐大的支援或輔助說明,否則豈不是對應的 「模組」 或 「程式套件」 需自己撰寫嗎?
老實說,(就筆者而言) Python並不容易學習,其理由可有:
(1) 因Python的功能較 「全面性」,故若無電腦資訊科技等相關知識背景,初學者並不容易進入。
(2) 其實不應該怪Python,原因是實際社會環境太過於複雜,當Python逐步將實際納入電腦分析內,自然指令或狀況就特多且繁雜。
(3) 畢竟Python是自由軟體且其為一種物件導向程式語言,任何 「自設的函數」 或模組皆可支援。由於撰寫的習慣不一,使得不同函數的內部指令格式未必一致,故面臨一種新的模組或函數,首先必須清楚對應的內部指令用法。由於不一,故有點麻煩。
(4) 許多模組的 「使用手冊」 仍太過於簡化或範例太少,此有待我們持續以嘗試錯誤的方式找出其用法。
(5) Python的指令或操作容易犯錯。
雖說如此,Python仍是筆者接觸過許多程式語言後的首選,而且學習Python似乎符合實際的需要。
本書提供一些學習Python的方式,可以分述如下:
(1) 本書建議初學者可於Spyder的環境下操作。
(2) 使用 「Run selection or …」 的方式 (詳見第1章),即寫完指令後可立即檢視修正。
(3) 如前所述,許多模組內的函數指令未必一致,故應隨時上網查詢不同模組內各函數指令的用法;換言之,讀者應習慣上網查詢。
(4) 看完許多函數指令用法的說明,通常仍是 「百思不得其解」,此時可先從 「範例」 著手。
(5) 由於模組內各函數指令的功能頗多,對應的指令有些複雜,故應多實際操作。
基本上,本書是以教程 (tutorials) 的方式進行,書內幾乎皆有提供對應的指令與結果,為了節省篇幅或不想徒增困惱,許多模組內的函數指令本書並未多作說明,故需要讀者與筆者配合,自行上網查詢。當然,所附的光碟內有全書完整的程式碼。
本書的目的是欲彌補 <<統計>> 與 <<歐選>> 之不足,因此全書幾乎「從源頭說起」,故本書適合初學者使用;換句話說,本書與筆者之前的著作有些不同。本書的進入門檻或專業性質並不高,故應該也適合一般社會大眾使用。全書共分9章。第1章是Python的簡介說明,其中包括如何建立 「類別 (class)」 與模組 (module)。第2章介紹Python的基本語法。第3章則敘述如何於Python內操作矩陣以及一些基本的矩陣運算。第4章介紹主要的資料結構型態:資料框,以及如何進行資料框內的操作。第5章則說明如何建立時間序列型態資料,即如何於Python內顯示日期與時間。第6章屬於第4章的延續,該章說明 「進階的資料框」 或稱為 「多層次資料框」 的建立。第7章則介紹不同資料框之間的合併操作。第8章屬於資料的輸入與輸出,其中包括如何讀取網路上的資料。第9章是資料的探索與繪圖的說明。最後,值得一提的是閱讀本書的最好方式應該是 「一邊閱讀,一邊操作」,不要只用純粹閱讀的方式。切記!
筆者曾經無意中在網路上發現某高中圖書館竟然也有 <<統計>> 與 <<衍商>> 二書的收藏 (筆者有些意外),此或許隱含著電腦程式語言已經默默地往下紮根;或者說,電腦程式語言的確相當吸引人,即使高中生也無法拒絕其吸引力,上述高中應該是有看到R語言與Python,才會特別注意 (畢竟上述二書屬於大學用書);換言之,程式語言的魅力,應該已無法擋。筆者也慶幸能逐漸搭上此潮流趨勢。不過,畢竟仍只是在起步,有待筆者繼續努力;雖說如此,「老先生」 可以學習,年輕的應該更可以。隨書仍附上兒子的一些作品。感謝內人的一些建議。筆者才疏識淺,倉促成書,錯誤難免,望各界先進指正。最後,祝操作順利。
林進益
寫於高雄甲仙
2021/5/31