如何用 Python 可視化《三國(guó)》人物與兵器出現(xiàn)頻率?(視頻教程)

咱們以《三國(guó)演義》人名和兵器譜為例,嘗試讀取不同結(jié)構(gòu)的文本文件,并且對(duì)其中的信息進(jìn)行統(tǒng)計(jì)分析和可視化。

入門(mén)

如何幫助學(xué)生高效入門(mén) Python ,一直是困擾我的問(wèn)題。

總結(jié)經(jīng)驗(yàn)后,我寫(xiě)下了《如何高效學(xué)Python?》一文。

文中按照自律能力,我把學(xué)生分成了3個(gè)類別。

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

自律能力中等的,可以學(xué)各種輕量級(jí)課程組合。除了我當(dāng)時(shí)推薦的課程平臺(tái)外,最近我發(fā)現(xiàn) Udemy 上的某些課程,也很不錯(cuò);

自律能力較低的,可以學(xué)一門(mén)比較完整的專項(xiàng)課程。我推薦了經(jīng)典 Python 入門(mén)課“Programming for Everybody”。

這篇文章很受歡迎,多個(gè)平臺(tái)上閱讀量都數(shù)以萬(wàn)計(jì)。

可是,有一個(gè)統(tǒng)計(jì)規(guī)律,我寫(xiě)作時(shí),似乎沒(méi)有考慮到。

直到后來(lái),我收到了多名讀者的留言反饋,才恍然大悟。

這個(gè)統(tǒng)計(jì)規(guī)律是:

自律能力,和英文能力,是顯著正相關(guān)的。

仔細(xì)諑磨一下這句話,是不是能品出些滋味來(lái)?

如果一個(gè)學(xué)生自律能力較低,去嘗試 “Programming for Everybody”,結(jié)果會(huì)發(fā)現(xiàn)英文聽(tīng)不懂,于是放棄……

讀者的反饋,讓我意識(shí)到了,找一門(mén)靠譜的、全面系統(tǒng)講解 Python 基礎(chǔ)的中文在線課程,是很重要的。

這樣的課程,如果能夠達(dá)到 “Programming for Everybody”的深度與廣度,那么學(xué)過(guò)后,再進(jìn)一步學(xué)數(shù)據(jù)挖掘、機(jī)器學(xué)習(xí),乃至深度神經(jīng)網(wǎng)絡(luò),就可以水到渠成了。

前幾天,看到賣桃君(MacTalk,池建強(qiáng)老師的公眾號(hào))又重發(fā)了《人生苦短,我用 Python》的感言,我就知道又一門(mén) Python 基礎(chǔ)課程來(lái)了。

果不其然,池老師推薦的,是他們公司《極客時(shí)間》平臺(tái)上的一門(mén)新 Python 課程《零基礎(chǔ)學(xué) Python》,主講人是尹會(huì)生老師,金山軟件西山居技術(shù)經(jīng)理。

雖然我不需要“零基礎(chǔ)”學(xué) Python,但是我很想了解這門(mén)課,是否足夠培訓(xùn)培訓(xùn)新入學(xué)的研究生,迅速掌握 Python 。

我很快就付費(fèi)訂閱了。

周末,我花了兩個(gè)半天的時(shí)間,把目前已上線的27個(gè)視頻(預(yù)計(jì)總視頻數(shù)量50個(gè)),都從頭到尾,完整看了一遍。

許多環(huán)節(jié),我都實(shí)際跑了代碼,還做了筆記。

我覺(jué)得,這門(mén)課對(duì)于我這個(gè)“非零基礎(chǔ)”的學(xué)員,有不少幫助和啟發(fā)。

如果你一直從事某一方面的工作或研究,即便是 Python 這么簡(jiǎn)單的語(yǔ)言,很多語(yǔ)法和技巧,你也不會(huì)經(jīng)常用到。

用進(jìn)廢退。很多你學(xué)過(guò)的東西,也會(huì)遺忘掉。

系統(tǒng)地梳理知識(shí)體系,可以幫助自己補(bǔ)足漏洞,不至于經(jīng)?!爸匦掳l(fā)明輪子”。

另外,我發(fā)現(xiàn)之前教程讀者不斷提出的一些問(wèn)題,其實(shí)都跟 Python 基礎(chǔ)命令的不熟悉有關(guān)系。

例如幾乎每次教程,都要用到的文件操作,以讀取外部數(shù)據(jù)。

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

但是那些非結(jié)構(gòu)化的文本文件,你該如何讀取與分析呢?

如果遇到編碼問(wèn)題,該怎么辦?

尹老師在視頻教程中,講解了《三國(guó)演義》人名與兵器出現(xiàn)次數(shù)統(tǒng)計(jì)的例子,讓我眼前一亮,覺(jué)得確實(shí)是很好的分析案例。

一個(gè)例子里面,不僅講解了文件操作,還順帶復(fù)習(xí)了字符串、列表和字典等多項(xiàng)知識(shí)點(diǎn)。

而且我也是個(gè)《三國(guó)》迷,上中學(xué)的時(shí)候玩兒《三國(guó)志IV》非常上癮。

為了修改武將技能和數(shù)值,還專門(mén)學(xué)會(huì)了16進(jìn)制。

我在思考,如果換作自己授課,用同樣的數(shù)據(jù)作為例子,給學(xué)生講文件讀取、字符串拆分、列表循環(huán)、字典生成……我會(huì)怎么講呢?

作為行動(dòng)派,我立刻就做了個(gè)視頻教程出來(lái)。

視頻教程

我采用 Jupyter Notebook 撰寫(xiě)了源代碼,然后調(diào)用 mybinder ,把教程的運(yùn)行環(huán)境扔到了云上。

請(qǐng)點(diǎn)擊這個(gè)鏈接http://t.cn/R1TLtxq),直接進(jìn)入咱們的實(shí)驗(yàn)環(huán)境。

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

如果你對(duì)這個(gè)代碼運(yùn)行環(huán)境的構(gòu)建過(guò)程感興趣,歡迎閱讀我的《如何用iPad運(yùn)行Python代碼?》一文。

瀏覽器中開(kāi)啟了咱們的環(huán)境后,請(qǐng)你觀看我給你錄制的視頻教程。

視頻教程的鏈接在這里

希望你能跟著教程,實(shí)際操作一遍。這樣收獲會(huì)比較大。

教程的末尾,我給你留了一道練習(xí)題。說(shuō)明了練習(xí)題的要求,還給出了輔助框架代碼。

請(qǐng)你自行嘗試解決該練習(xí)題,以鞏固所學(xué)知識(shí)。

如果你解完了練習(xí)題,或者在解題過(guò)程中遇到了問(wèn)題,歡迎參考我做的練習(xí)解答視頻,核對(duì)參考答案。

這段視頻的鏈接在這里。

通過(guò)本教程,希望你已經(jīng)掌握了以下知識(shí):

  • 如何讀取文本文件;
  • 如何把字符串分割成列表;
  • 如何依據(jù)順序,找出列表中的某一項(xiàng)內(nèi)容;
  • 如何遍歷列表;
  • 如何統(tǒng)計(jì)字符串a(chǎn)中,字符串b出現(xiàn)的次數(shù);
  • 如何新建,并用遍歷方法,填充字典;
  • 如何讀入外部幫助函數(shù)模塊,并調(diào)用其功能函數(shù);

如果你希望在本地,而非云端運(yùn)行本教程中的樣例,請(qǐng)使用這個(gè)鏈接http://t.cn/R1T4400)下載本文用到的全部源代碼和運(yùn)行環(huán)境配置文件(Pipenv)壓縮包。

然后,請(qǐng)你參考《如何用 pipenv 克隆 Python 教程代碼運(yùn)行環(huán)境?》一文的說(shuō)明,利用 Pipenv ,在本地構(gòu)建代碼運(yùn)行環(huán)境。

如果你知道如何使用github,也歡迎用這個(gè)鏈接http://t.cn/R1T4iL5)訪問(wèn)對(duì)應(yīng)的github repo,進(jìn)行clone或者fork等操作。

當(dāng)然,要是能給我的repo加一顆星,就更好了。

建議

錄完視頻,我做個(gè)對(duì)比分析:

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

細(xì)節(jié)的差別,可能有很多。但是大多都不重要。

我只想給尹老師提一個(gè)建議——把握節(jié)奏。

這里的節(jié)奏,主要是為了學(xué)生和老師分別獲得即時(shí)反饋用的。

編程不是一門(mén)看了,甚至聽(tīng)了,就能懂的課。

這就是為什么,得到App至今也沒(méi)有上線編程課程。

編程必須要強(qiáng)調(diào)訓(xùn)練,注重實(shí)踐。

訓(xùn)練該在什么時(shí)候做?

來(lái)自 Coursera, Udacity, 和 DataCamp 等平臺(tái)的經(jīng)驗(yàn)是:

間隔必須足夠短。

老師得盯住學(xué)生在學(xué)完知識(shí)點(diǎn)后,旋即練習(xí)。

通過(guò)練習(xí),把握知識(shí)和技能,提升應(yīng)用能力。

學(xué)生在練習(xí)中遇到了疑惑,及時(shí)提問(wèn),加以解決,可以避免疑問(wèn)的非線性積攢。

如果你不理解“疑問(wèn)的非線性積攢”,可以回憶你學(xué)微積分或隨機(jī)過(guò)程的遭遇。

學(xué)生不斷積攢疑問(wèn),對(duì)老師也會(huì)有很大的不利影響。因?yàn)槔蠋熗瑯拥貌坏接行Х答仯€以為學(xué)生那邊一切順利呢。

在文件操作這一部分,尹老師確實(shí)也留了練習(xí)。

# 練習(xí)一 文件的創(chuàng)建和使用
1. 創(chuàng)建一個(gè)文件,并寫(xiě)入當(dāng)前日期
2. 再次打開(kāi)這個(gè)文件,讀取文件的前4個(gè)字符后退出

問(wèn)題在于,有多少學(xué)生會(huì)主動(dòng)去 GitHub 上面找到這個(gè)練習(xí),而且不但做了,還反饋給老師呢?

他們會(huì)拖延,甚至忽略這些練習(xí)。

然后一味繼續(xù)播放下一集。

看似懂了內(nèi)容,實(shí)際上沒(méi)有真正掌握。

一旦中途遇到了比較困難的題目,或者是最后來(lái)個(gè)“期末考試”(例如項(xiàng)目作業(yè)),學(xué)生剛剛建立起來(lái)的學(xué)習(xí)興趣和信心,可能會(huì)徹底崩盤(pán)。

還是回到一開(kāi)始那個(gè)問(wèn)題——如果學(xué)生自律能力足夠強(qiáng),他也就不需要這門(mén) MOOC 了。

我的視頻教程,就是把尹老師原先直接講解的內(nèi)容(武器文件讀取與統(tǒng)計(jì))先作為練習(xí)題,布置給了學(xué)生。

剛學(xué)完知識(shí)后,大部分人,還是愿意在操作成本足夠低的情況下,去嘗試一下的。

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

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

  1. 不需要學(xué)生自行安裝任何編程環(huán)境,有瀏覽器和網(wǎng)絡(luò)就行;
  2. 不用離開(kāi) Jupyter Lab 界面,直接打開(kāi)另外一個(gè) ipynb 就行;
  3. 不需要面對(duì)空的文檔,只需要在輔助代碼基礎(chǔ)上,做填空就行;
  4. 不需要猜測(cè)代碼長(zhǎng)度,已經(jīng)給出了建議行數(shù);
  5. 不需要接觸過(guò)多新的知識(shí)點(diǎn),例如數(shù)據(jù)框轉(zhuǎn)化、排序和繪圖等,只需要調(diào)用已封裝的幫助函數(shù)即可。

而且,視頻教程末尾,明確說(shuō)明了,下一個(gè)視頻就是講解練習(xí)的。

這就指明了,本練習(xí)的截止日期,就是你播放下一個(gè)視頻的時(shí)候。

對(duì)于自律能力差的學(xué)生,很多時(shí)候,只能靠這種前面鋪路、后面推一把的方法。

尹老師的教程介紹里面,類似《三國(guó)》武將和兵器譜統(tǒng)計(jì)這樣的有趣例子還有不少。

例如查找星座和屬相,用機(jī)器學(xué)習(xí)分類鳶尾花,用爬蟲(chóng)爬圖片等。

因此,我對(duì)后續(xù)即將上線的20幾個(gè)視頻,還是很期待的。

《零基礎(chǔ)學(xué) Python》課程對(duì)應(yīng)的 github 項(xiàng)目鏈接在這里http://t.cn/R1TGsnK)。

里面不僅包括課程已發(fā)布視頻的全部對(duì)應(yīng)代碼,還包含了配套的練習(xí)和講義等。你可以在訂閱課程之前,先瀏覽一下。

如果你對(duì)這門(mén)課程感興趣,可以點(diǎn)擊 這個(gè)鏈接 ,掃碼訂閱。

討論

你是通過(guò)什么課程或書(shū)籍,入門(mén) Python 的?它有什么特色?還有哪些值得改進(jìn)的地方?歡迎留言,把你的經(jīng)驗(yàn)和思考分享給大家,我們一起交流討論。

喜歡請(qǐng)點(diǎn)贊。還可以微信關(guān)注和置頂我的公眾號(hào)“玉樹(shù)芝蘭”(nkwangshuyi)。

如果你對(duì)數(shù)據(jù)科學(xué)感興趣,不妨閱讀我的系列教程索引貼《如何高效入門(mén)數(shù)據(jù)科學(xué)?》,里面還有更多的有趣問(wèn)題及解法。

延伸閱讀

如何高效學(xué)Python?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容