如何用 Python 視覺化《三國》人物與兵器出現頻率?(視訊教程)

王樹義發表於2018-06-27

如何用 Python 視覺化《三國》人物與兵器出現頻率?(視訊教程)

我們們以《三國演義》人名和兵器譜為例,嘗試讀取不同結構的文字檔案,並且對其中的資訊進行統計分析和視覺化。

入門

如何幫助學生高效入門 Python ,一直是困擾我的問題。

總結經驗後,我寫下了《如何高效學Python?》一文。

如何用 Python 視覺化《三國》人物與兵器出現頻率?(視訊教程)

文中按照自律能力,我把學生分成了3個類別。

自律能力最高的,看書就行。文中推薦了我認為最好的 Python 書籍,有中文譯本;

自律能力中等的,可以學各種輕量級課程組合。除了我當時推薦的課程平臺外,最近我發現 Udemy 上的某些課程,也很不錯;

自律能力較低的,可以學一門比較完整的專項課程。我推薦了經典 Python 入門課“Programming for Everybody”。

這篇文章很受歡迎,多個平臺上閱讀量都數以萬計。

可是,有一個統計規律,我寫作時,似乎沒有考慮到。

直到後來,我收到了多名讀者的留言反饋,才恍然大悟。

這個統計規律是:

自律能力,和英文能力,是顯著正相關的。

仔細諑磨一下這句話,是不是能品出些滋味來?

如果一個學生自律能力較低,去嘗試 “Programming for Everybody”,結果會發現英文聽不懂,於是放棄……

讀者的反饋,讓我意識到了,找一門靠譜的、全面系統講解 Python 基礎的中文線上課程,是很重要的。

這樣的課程,如果能夠達到 “Programming for Everybody”的深度與廣度,那麼學過後,再進一步學資料探勘、機器學習,乃至深度神經網路,就可以水到渠成了。

前幾天,看到賣桃君(MacTalk,池建強老師的公眾號)又重發了《人生苦短,我用 Python》的感言,我就知道又一門 Python 基礎課程來了。

果不其然,池老師推薦的,是他們公司《極客時間》平臺上的一門新 Python 課程《零基礎學 Python》,主講人是尹會生老師,金山軟體西山居技術經理。

如何用 Python 視覺化《三國》人物與兵器出現頻率?(視訊教程)

雖然我不需要“零基礎”學 Python,但是我很想了解這門課,是否足夠培訓培訓新入學的研究生,迅速掌握 Python 。

我很快就付費訂閱了。

週末,我花了兩個半天的時間,把目前已上線的27個視訊(預計總視訊數量50個),都從頭到尾,完整看了一遍。

許多環節,我都實際跑了程式碼,還做了筆記。

我覺得,這門課對於我這個“非零基礎”的學員,有不少幫助和啟發。

如果你一直從事某一方面的工作或研究,即便是 Python 這麼簡單的語言,很多語法和技巧,你也不會經常用到。

用進廢退。很多你學過的東西,也會遺忘掉。

系統地梳理知識體系,可以幫助自己補足漏洞,不至於經常“重新發明輪子”。

另外,我發現之前教程讀者不斷提出的一些問題,其實都跟 Python 基礎命令的不熟悉有關係。

例如幾乎每次教程,都要用到的檔案操作,以讀取外部資料。

你知道可以用 Pandas 讀取與分析處理 csv 檔案或者 Excel 檔案。

但是那些非結構化的文字檔案,你該如何讀取與分析呢?

如果遇到編碼問題,該怎麼辦?

尹老師在視訊教程中,講解了《三國演義》人名與兵器出現次數統計的例子,讓我眼前一亮,覺得確實是很好的分析案例。

一個例子裡面,不僅講解了檔案操作,還順帶複習了字串、列表和字典等多項知識點。

而且我也是個《三國》迷,上中學的時候玩兒《三國志IV》非常上癮。

如何用 Python 視覺化《三國》人物與兵器出現頻率?(視訊教程)

為了修改武將技能和數值,還專門學會了16進位制。

我在思考,如果換作自己授課,用同樣的資料作為例子,給學生講檔案讀取、字串拆分、列表迴圈、字典生成……我會怎麼講呢?

作為行動派,我立刻就做了個視訊教程出來。

視訊教程

我採用 Jupyter Notebook 撰寫了原始碼,然後呼叫 mybinder ,把教程的執行環境扔到了雲上。

請點選這個連結t.cn/R1TLtxq),直接進入我們們的實驗環境。

如何用 Python 視覺化《三國》人物與兵器出現頻率?(視訊教程)

不需要在本地計算機安裝任何軟體包。只要有一個現代化瀏覽器(包括Google Chrome, Firefox, Safari和Microsoft Edge等)就可以了。全部的依賴軟體,我都已經為你準備好了。

如果你對這個程式碼執行環境的構建過程感興趣,歡迎閱讀我的《如何用iPad執行Python程式碼?》一文。

瀏覽器中開啟了我們們的環境後,請你觀看我給你錄製的視訊教程。

視訊教程的連結在這裡

如何用 Python 視覺化《三國》人物與兵器出現頻率?(視訊教程)

希望你能跟著教程,實際操作一遍。這樣收穫會比較大。

教程的末尾,我給你留了一道練習題。說明了練習題的要求,還給出了輔助框架程式碼。

請你自行嘗試解決該練習題,以鞏固所學知識。

如果你解完了練習題,或者在解題過程中遇到了問題,歡迎參考我做的練習解答視訊,核對參考答案。

這段視訊的連結在這裡

如何用 Python 視覺化《三國》人物與兵器出現頻率?(視訊教程)

通過本教程,希望你已經掌握了以下知識:

  • 如何讀取文字檔案;
  • 如何把字串分割成列表;
  • 如何依據順序,找出列表中的某一項內容;
  • 如何遍歷列表;
  • 如何統計字串a中,字串b出現的次數;
  • 如何新建,並用遍歷方法,填充字典;
  • 如何讀入外部幫助函式模組,並呼叫其功能函式;

如果你希望在本地,而非雲端執行本教程中的樣例,請使用這個連結t.cn/R1T4400)下載本文用到的全部原始碼和執行環境配置檔案(Pipenv)壓縮包。

然後,請你參考《如何用 pipenv 克隆 Python 教程程式碼執行環境?》一文的說明,利用 Pipenv ,在本地構建程式碼執行環境。

如果你知道如何使用github,也歡迎用這個連結t.cn/R1T4iL5)訪問對應的github repo,進行clone或者fork等操作。

如何用 Python 視覺化《三國》人物與兵器出現頻率?(視訊教程)

當然,要是能給我的repo加一顆星,就更好了。

建議

錄完視訊,我做個對比分析:

我倆的講法,到底有哪些不同?

細節的差別,可能有很多。但是大多都不重要。

我只想給尹老師提一個建議——把握節奏

這裡的節奏,主要是為了學生和老師分別獲得即時反饋用的。

程式設計不是一門看了,甚至聽了,就能懂的課。

這就是為什麼,得到App至今也沒有上線程式設計課程。

程式設計必須要強調訓練,注重實踐。

訓練該在什麼時候做?

來自 Coursera, Udacity, 和 DataCamp 等平臺的經驗是:

間隔必須足夠短。

老師得盯住學生在學完知識點後,旋即練習。

通過練習,把握知識和技能,提升應用能力。

學生在練習中遇到了疑惑,及時提問,加以解決,可以避免疑問的非線性積攢。

如果你不理解“疑問的非線性積攢”,可以回憶你學微積分或隨機過程的遭遇。

學生不斷積攢疑問,對老師也會有很大的不利影響。因為老師同樣得不到有效反饋,還以為學生那邊一切順利呢。

在檔案操作這一部分,尹老師確實也留了練習。

# 練習一 檔案的建立和使用
1. 建立一個檔案,並寫入當前日期
2. 再次開啟這個檔案,讀取檔案的前4個字元後退出
複製程式碼

問題在於,有多少學生會主動去 GitHub 上面找到這個練習,而且不但做了,還反饋給老師呢?

他們會拖延,甚至忽略這些練習。

然後一味繼續播放下一集。

看似懂了內容,實際上沒有真正掌握。

一旦中途遇到了比較困難的題目,或者是最後來個“期末考試”(例如專案作業),學生剛剛建立起來的學習興趣和信心,可能會徹底崩盤。

還是回到一開始那個問題——如果學生自律能力足夠強,他也就不需要這門 MOOC 了。

我的視訊教程,就是把尹老師原先直接講解的內容(武器檔案讀取與統計)先作為練習題,佈置給了學生。

剛學完知識後,大部分人,還是願意在操作成本足夠低的情況下,去嘗試一下的。

什麼叫“操作成本足夠低”?

看看我採取的這些方法,你就能理解了:

  1. 不需要學生自行安裝任何程式設計環境,有瀏覽器和網路就行;
  2. 不用離開 Jupyter Lab 介面,直接開啟另外一個 ipynb 就行;
  3. 不需要面對空的文件,只需要在輔助程式碼基礎上,做填空就行;
  4. 不需要猜測程式碼長度,已經給出了建議行數;
  5. 不需要接觸過多新的知識點,例如資料框轉化、排序和繪圖等,只需要呼叫已封裝的幫助函式即可。

而且,視訊教程末尾,明確說明了,下一個視訊就是講解練習的。

這就指明瞭,本練習的截止日期,就是你播放下一個視訊的時候。

對於自律能力差的學生,很多時候,只能靠這種前面鋪路、後面推一把的方法。

尹老師的教程介紹裡面,類似《三國》武將和兵器譜統計這樣的有趣例子還有不少。

例如查詢星座和屬相,用機器學習分類鳶尾花,用爬蟲爬圖片等。

因此,我對後續即將上線的20幾個視訊,還是很期待的。

《零基礎學 Python》課程對應的 github 專案連結在這裡t.cn/R1TGsnK)。

如何用 Python 視覺化《三國》人物與兵器出現頻率?(視訊教程)

裡面不僅包括課程已釋出視訊的全部對應程式碼,還包含了配套的練習和講義等。你可以在訂閱課程之前,先瀏覽一下。

如果你對這門課程感興趣,可以點選 這個連結 ,掃碼訂閱。

討論

你是通過什麼課程或書籍,入門 Python 的?它有什麼特色?還有哪些值得改進的地方?歡迎留言,把你的經驗和思考分享給大家,我們一起交流討論。

如何用 Python 視覺化《三國》人物與兵器出現頻率?(視訊教程)

我們們以《三國演義》人名和兵器譜為例,嘗試讀取不同結構的文字檔案,並且對其中的資訊進行統計分析和視覺化。

入門

如何幫助學生高效入門 Python ,一直是困擾我的問題。

總結經驗後,我寫下了《如何高效學Python?》一文。

如何用 Python 視覺化《三國》人物與兵器出現頻率?(視訊教程)

文中按照自律能力,我把學生分成了3個類別。

自律能力最高的,看書就行。文中推薦了我認為最好的 Python 書籍,有中文譯本;

自律能力中等的,可以學各種輕量級課程組合。除了我當時推薦的課程平臺外,最近我發現 Udemy 上的某些課程,也很不錯;

自律能力較低的,可以學一門比較完整的專項課程。我推薦了經典 Python 入門課“Programming for Everybody”。

這篇文章很受歡迎,多個平臺上閱讀量都數以萬計。

可是,有一個統計規律,我寫作時,似乎沒有考慮到。

直到後來,我收到了多名讀者的留言反饋,才恍然大悟。

這個統計規律是:

自律能力,和英文能力,是顯著正相關的。

仔細諑磨一下這句話,是不是能品出些滋味來?

如果一個學生自律能力較低,去嘗試 “Programming for Everybody”,結果會發現英文聽不懂,於是放棄……

讀者的反饋,讓我意識到了,找一門靠譜的、全面系統講解 Python 基礎的中文線上課程,是很重要的。

這樣的課程,如果能夠達到 “Programming for Everybody”的深度與廣度,那麼學過後,再進一步學資料探勘、機器學習,乃至深度神經網路,就可以水到渠成了。

前幾天,看到賣桃君(MacTalk,池建強老師的公眾號)又重發了《人生苦短,我用 Python》的感言,我就知道又一門 Python 基礎課程來了。

果不其然,池老師推薦的,是他們公司《極客時間》平臺上的一門新 Python 課程《零基礎學 Python》,主講人是尹會生老師,金山軟體西山居技術經理。

如何用 Python 視覺化《三國》人物與兵器出現頻率?(視訊教程)

雖然我不需要“零基礎”學 Python,但是我很想了解這門課,是否足夠培訓培訓新入學的研究生,迅速掌握 Python 。

我很快就付費訂閱了。

週末,我花了兩個半天的時間,把目前已上線的27個視訊(預計總視訊數量50個),都從頭到尾,完整看了一遍。

許多環節,我都實際跑了程式碼,還做了筆記。

我覺得,這門課對於我這個“非零基礎”的學員,有不少幫助和啟發。

如果你一直從事某一方面的工作或研究,即便是 Python 這麼簡單的語言,很多語法和技巧,你也不會經常用到。

用進廢退。很多你學過的東西,也會遺忘掉。

系統地梳理知識體系,可以幫助自己補足漏洞,不至於經常“重新發明輪子”。

另外,我發現之前教程讀者不斷提出的一些問題,其實都跟 Python 基礎命令的不熟悉有關係。

例如幾乎每次教程,都要用到的檔案操作,以讀取外部資料。

你知道可以用 Pandas 讀取與分析處理 csv 檔案或者 Excel 檔案。

但是那些非結構化的文字檔案,你該如何讀取與分析呢?

如果遇到編碼問題,該怎麼辦?

尹老師在視訊教程中,講解了《三國演義》人名與兵器出現次數統計的例子,讓我眼前一亮,覺得確實是很好的分析案例。

一個例子裡面,不僅講解了檔案操作,還順帶複習了字串、列表和字典等多項知識點。

而且我也是個《三國》迷,上中學的時候玩兒《三國志IV》非常上癮。

如何用 Python 視覺化《三國》人物與兵器出現頻率?(視訊教程)

為了修改武將技能和數值,還專門學會了16進位制。

我在思考,如果換作自己授課,用同樣的資料作為例子,給學生講檔案讀取、字串拆分、列表迴圈、字典生成……我會怎麼講呢?

作為行動派,我立刻就做了個視訊教程出來。

視訊教程

我採用 Jupyter Notebook 撰寫了原始碼,然後呼叫 mybinder ,把教程的執行環境扔到了雲上。

請點選這個連結t.cn/R1TLtxq),直接進入我們們的實驗環境。

如何用 Python 視覺化《三國》人物與兵器出現頻率?(視訊教程)

不需要在本地計算機安裝任何軟體包。只要有一個現代化瀏覽器(包括Google Chrome, Firefox, Safari和Microsoft Edge等)就可以了。全部的依賴軟體,我都已經為你準備好了。

如果你對這個程式碼執行環境的構建過程感興趣,歡迎閱讀我的《如何用iPad執行Python程式碼?》一文。

瀏覽器中開啟了我們們的環境後,請你觀看我給你錄製的視訊教程。

視訊教程的連結在這裡

如何用 Python 視覺化《三國》人物與兵器出現頻率?(視訊教程)

希望你能跟著教程,實際操作一遍。這樣收穫會比較大。

教程的末尾,我給你留了一道練習題。說明了練習題的要求,還給出了輔助框架程式碼。

請你自行嘗試解決該練習題,以鞏固所學知識。

如果你解完了練習題,或者在解題過程中遇到了問題,歡迎參考我做的練習解答視訊,核對參考答案。

這段視訊的連結在這裡

如何用 Python 視覺化《三國》人物與兵器出現頻率?(視訊教程)

通過本教程,希望你已經掌握了以下知識:

  • 如何讀取文字檔案;
  • 如何把字串分割成列表;
  • 如何依據順序,找出列表中的某一項內容;
  • 如何遍歷列表;
  • 如何統計字串a中,字串b出現的次數;
  • 如何新建,並用遍歷方法,填充字典;
  • 如何讀入外部幫助函式模組,並呼叫其功能函式;

如果你希望在本地,而非雲端執行本教程中的樣例,請使用這個連結t.cn/R1T4400)下載本文用到的全部原始碼和執行環境配置檔案(Pipenv)壓縮包。

然後,請你參考《如何用 pipenv 克隆 Python 教程程式碼執行環境?》一文的說明,利用 Pipenv ,在本地構建程式碼執行環境。

如果你知道如何使用github,也歡迎用這個連結t.cn/R1T4iL5)訪問對應的github repo,進行clone或者fork等操作。

如何用 Python 視覺化《三國》人物與兵器出現頻率?(視訊教程)

當然,要是能給我的repo加一顆星,就更好了。

建議

錄完視訊,我做個對比分析:

我倆的講法,到底有哪些不同?

細節的差別,可能有很多。但是大多都不重要。

我只想給尹老師提一個建議——把握節奏

這裡的節奏,主要是為了學生和老師分別獲得即時反饋用的。

程式設計不是一門看了,甚至聽了,就能懂的課。

這就是為什麼,得到App至今也沒有上線程式設計課程。

程式設計必須要強調訓練,注重實踐。

訓練該在什麼時候做?

來自 Coursera, Udacity, 和 DataCamp 等平臺的經驗是:

間隔必須足夠短。

老師得盯住學生在學完知識點後,旋即練習。

通過練習,把握知識和技能,提升應用能力。

學生在練習中遇到了疑惑,及時提問,加以解決,可以避免疑問的非線性積攢。

如果你不理解“疑問的非線性積攢”,可以回憶你學微積分或隨機過程的遭遇。

學生不斷積攢疑問,對老師也會有很大的不利影響。因為老師同樣得不到有效反饋,還以為學生那邊一切順利呢。

在檔案操作這一部分,尹老師確實也留了練習。

# 練習一 檔案的建立和使用
1. 建立一個檔案,並寫入當前日期
2. 再次開啟這個檔案,讀取檔案的前4個字元後退出
複製程式碼

問題在於,有多少學生會主動去 GitHub 上面找到這個練習,而且不但做了,還反饋給老師呢?

他們會拖延,甚至忽略這些練習。

然後一味繼續播放下一集。

看似懂了內容,實際上沒有真正掌握。

一旦中途遇到了比較困難的題目,或者是最後來個“期末考試”(例如專案作業),學生剛剛建立起來的學習興趣和信心,可能會徹底崩盤。

還是回到一開始那個問題——如果學生自律能力足夠強,他也就不需要這門 MOOC 了。

我的視訊教程,就是把尹老師原先直接講解的內容(武器檔案讀取與統計)先作為練習題,佈置給了學生。

剛學完知識後,大部分人,還是願意在操作成本足夠低的情況下,去嘗試一下的。

什麼叫“操作成本足夠低”?

看看我採取的這些方法,你就能理解了:

  1. 不需要學生自行安裝任何程式設計環境,有瀏覽器和網路就行;
  2. 不用離開 Jupyter Lab 介面,直接開啟另外一個 ipynb 就行;
  3. 不需要面對空的文件,只需要在輔助程式碼基礎上,做填空就行;
  4. 不需要猜測程式碼長度,已經給出了建議行數;
  5. 不需要接觸過多新的知識點,例如資料框轉化、排序和繪圖等,只需要呼叫已封裝的幫助函式即可。

而且,視訊教程末尾,明確說明了,下一個視訊就是講解練習的。

這就指明瞭,本練習的截止日期,就是你播放下一個視訊的時候。

對於自律能力差的學生,很多時候,只能靠這種前面鋪路、後面推一把的方法。

尹老師的教程介紹裡面,類似《三國》武將和兵器譜統計這樣的有趣例子還有不少。

例如查詢星座和屬相,用機器學習分類鳶尾花,用爬蟲爬圖片等。

因此,我對後續即將上線的20幾個視訊,還是很期待的。

《零基礎學 Python》課程對應的 github 專案連結在這裡t.cn/R1TGsnK)。

如何用 Python 視覺化《三國》人物與兵器出現頻率?(視訊教程)

裡面不僅包括課程已釋出視訊的全部對應程式碼,還包含了配套的練習和講義等。你可以在訂閱課程之前,先瀏覽一下。

如果你對這門課程感興趣,可以點選 這個連結 ,掃碼訂閱。

討論

你是通過什麼課程或書籍,入門 Python 的?它有什麼特色?還有哪些值得改進的地方?歡迎留言,把你的經驗和思考分享給大家,我們一起交流討論。

喜歡請點贊。還可以微信關注和置頂我的公眾號“玉樹芝蘭”(nkwangshuyi)

如果你對資料科學感興趣,不妨閱讀我的系列教程索引貼《如何高效入門資料科學?》,裡面還有更多的有趣問題及解法。

相關文章