Python數(shù)據(jù)分析答疑3:字典,函數(shù)

8.9 第三課 函數(shù)

作業(yè):

作業(yè)1 字典的值可以是字典本身, 以提供更多信息,例如:europe = { 'spain': { 'capital':'madrid', 'population':46.77 },

'france': { 'capital':'paris', 'population':66.03 },

'germany': { 'capital':'berlin', 'population':80.62 },

'norway': { 'capital':'oslo', 'population':5.084 } }

1 打印法國首都

2 加入意大利(italy)的首都(roma)和人口(population 59.83)

作業(yè)2 找出兩個整數(shù)48、78的最小公倍數(shù)

作業(yè)3 貸款月供計算器,具體要求參見圖片(圖3-1)

圖3-1



作業(yè)區(qū)及討論區(qū) Q&A:

目錄:

1,代碼運行問題

2,jupyter使用

3,代碼理解:range

4,代碼理解:max, min

5,代碼運行出錯

6,代碼運行優(yōu)化:統(tǒng)計大篇文檔詞頻

7,代碼運行出錯

8,學(xué)習(xí)信心

9,代碼運行問題

10,代碼運行出錯

11,代碼理解:啟動python解釋

12,代碼運行問題:嵌套,None

13,jupyter使用

14,jupyter使用

15,代碼運行:優(yōu)先級

16,代碼運行出錯:沒有輸出

17,代碼運行出錯:沒有輸出

18,代碼運行出錯

19,代碼運行出錯

20,資料包:快速找到需要的數(shù)據(jù)


圖3-2

Q 1 :請問為何“the”分1和6呢?第二段只得出6?(圖3-2)

A:三引號是三個單引號''',你這個題里,函數(shù)把單引號當(dāng)做第一個和最后一個單詞的一部分了。所以輸出結(jié)果是錯的。


Q 2 :為什么我的jupyter notebook點擊launch后右下角有藍(lán)色滾動條在動,可是過一會后啥也沒打開?

A:可以嘗試用命令行啟動試試,在anaconda prompt 中輸入 jupyter notebook


圖3-3

Q 3 :上圖(圖3-3)是lesson2第34條記錄,請問range也是一種數(shù)據(jù)類型嗎?謝謝指教

A:對的,是一種特殊數(shù)據(jù)類型,非基本的數(shù)據(jù)類型,提供的操作方式和列表基本沒有差別,大家記住這點可以了。


圖3-4

Q 4 :請問在上圖(圖3-4)中,第一組命令為何沒有把最大、最小值分別顯示出來?只有第二組是正確的方式嗎?

A:用print函數(shù)可以換行輸出多個結(jié)果,而其它只是輸出最后一個。


圖3-5

Q 5 : 圖3-5,換成“|”怎么結(jié)算就運算錯了呢?

A:運算符優(yōu)先級的問題,|的優(yōu)先級要高于<,所以會出問題。加上括號就行了。


Q 6 :求教大篇文檔如何統(tǒng)計詞頻?

課程里是就一個句子進(jìn)行了詞頻統(tǒng)計,找出最大最小。笑來老師應(yīng)該是就很大的文檔進(jìn)行詞頻統(tǒng)計,請問如何實現(xiàn)?是不是把文檔導(dǎo)入jupyter?

A:需要先把文件內(nèi)容讀取到指定變量中,如text變量,下面的操作就和老師上課的操作步驟一樣了,進(jìn)行詞頻分析。

如想了解python文件操作,可查看:https://www.w3cschool.cn/python/python-files-io.html


圖3-6

Q 7 :求教,代碼如圖(圖3-6),執(zhí)行之后結(jié)果一直出不來,可是仔細(xì)看代碼沒有錯呀!

A:出現(xiàn)這種情況的原因很多,如電腦長期鎖屏、執(zhí)行過死循環(huán)等等。不過重啟一下(jupyter 的kernel 頁面菜單上有個kernel ,上面有restart選項)就好了,restart是神技。


Q 8 :我剛才把第三課的回放又看了一遍,從頭到尾,我的唯一感觸就是看不懂。從哪開始看不懂的呢?就從while循環(huán),開始看不懂的。本身就還沒有理解while的含義,老師已經(jīng)開始執(zhí)行了一大串函數(shù)了,我也是一片懵逼。

我感覺學(xué)習(xí)Python與其他編程不一樣,Python中可能對不僅僅包含了編程的理念,這中間也包含了對數(shù)學(xué)的一種理解。如果數(shù)學(xué)理解能力差的同學(xué),比如我,可能就完全跟不上老師的進(jìn)度。

只知道敲了一大串代碼,然后結(jié)果就出來了,但是完全不曉得是咋回事。又談何學(xué)習(xí)。

比如演示中,有一段過程是找最大公約數(shù),我是反復(fù)看了三遍,愣是沒看懂每行代碼代表啥意思。我知道可能很多人看一遍就看的明明白白的,但是我確實是沒看懂。

從最大公約數(shù)這一段往后,我完全是看的云里霧里,根本沒有心思看下去,因為完全看不懂,只知道老師的代碼不停的敲,其實啥也看不懂。

我不知道是我個人哪個環(huán)節(jié)出了問題了? 我看了一下,有很多人已經(jīng)把作業(yè)的月供做了出來,我不知道有多少人是獨立做出來的。反正我是無處下筆。不要說敲代碼了,就是讓我用x、y解應(yīng)用題方式的方法,去求解,我都做不出來。我是不是,不適合老師的課程。

還是我沒有找到自己的方法,可是方法又去哪找呢?

A:首先、專項去看,靜下心來。我們要有拆解每個知識點的能力,各項擊破。比如說循環(huán)不懂,而且涉及到最小公約數(shù),那我們就先把最小公約數(shù)看明白,再看循環(huán)。我們要考慮大部分同學(xué)情況,所以約數(shù)課上不做講解。一定要學(xué)會集中精神,謹(jǐn)慎顧此失彼。尤其對初學(xué)者,知識點比較多,看這個問題,想另一個問題,最后兩個問題都無法解決,會產(chǎn)生心理恐慌。

第二、學(xué)習(xí)是需要循序漸進(jìn),對于基礎(chǔ)薄弱的同學(xué)會產(chǎn)生知識跳躍的感覺。畢竟這門課程是從0基礎(chǔ)到機(jī)器學(xué)習(xí)入門,在這個課時設(shè)定下是無法避免的。

第三、我們后面會盡量出些試題,已循環(huán)漸進(jìn)的方式給大家提供些指引。

第四、關(guān)于基礎(chǔ)好,那也是別人之前在這個方向投入過努力,而我們沒有花過這個時間,就需要在這段時間投入更多。

第五,能否成功在自己。不妨告訴大家,助教學(xué)編程時從一個完全不懂web編程到學(xué)會只花了不到2月的時間,涉及很多知識點,遇到不懂就看書,書看不懂就抄書,抄書有助于靜心,過兩年就年薪20k了。后來學(xué)習(xí)數(shù)據(jù)分析、從來沒接觸數(shù)據(jù)分析的人花了不到一個月時間看完了《利用Python進(jìn)行數(shù)據(jù)分析》這本書,每天從下班到晚上至少12點,每天自學(xué)至少4個小時。不過此時有了好的編程水平,學(xué)起來比較快。

最后,值錢的東西不付出努力就獲得就不值錢了,畢竟天上不會掉餡餅。


圖3-7

Q 9 : 為什么有的時候,shift+enter之后沒有運行程序,而是移到下一行去了么?比如上圖(圖3-7)的代碼,第二行輸入find_gsp(18,20)之后,shift+enter結(jié)果跳到下一行了,沒有顯示結(jié)果。哪位同學(xué)或者是老師如果知道麻煩告知,謝謝。

A:這種情況多數(shù)是要死循環(huán)導(dǎo)致的,出現(xiàn)死循環(huán)之后,記得要重啟一下kernel. 執(zhí)行菜單下的kernel=>restart。不重啟修改或者刪除都是沒用的,依然會卡住。


Q 10 :出現(xiàn)了 ‘find_gcd’ is not defined,怎么辦?

A:發(fā)現(xiàn)not defined這種錯誤,首先確認(rèn)一下定義這個變量單元格代碼是否執(zhí)行過了。[ ] 表示單元格沒有執(zhí)行。修改過單元格的代碼也要記得重新執(zhí)行下。


Q 11 :請問下面這句話的理解:

> 如果把上面的自定義函數(shù)保存為caculate.py文件里了,就可以在該文件當(dāng)前目錄下啟動python解釋器,用from caculate import find_gcd來導(dǎo)入函數(shù),注意caculate是文件名,而且不需要加.py擴(kuò)展名。

這句話講的“在當(dāng)前目錄下啟動python解釋器”是什么意思?怎樣操作呢?

A:啟動python解釋器,其實就是啟動一個環(huán)境,操作層面來講就是在指定的目錄下啟動python命令。jupyter notebook下的文件只要和py文件在一個目錄下,也可采用同樣方式導(dǎo)入。


圖3-8

Q 12 :關(guān)于第二節(jié)的案例(詞頻)有兩個問題。見上圖(圖3-8)。

A:a1: 括號套括號的形式是沒問題的,但要記住,括號應(yīng)該成對出現(xiàn)。

a2: None 和0的區(qū)別是,None 定義的是空集,并不是0,雖然在這道題的環(huán)境下用0也可以,但是如果有負(fù)數(shù)出現(xiàn)就不行了,會影響判斷。

所以我理解是,None 是比較通用的方式,試用范圍廣,用它也比較省事,不會給后續(xù)帶來麻煩。


Q 13 :請問怎樣寫出在GitHub里分享的教案,既有markdown格式,又有代碼,而且代碼前面的In [1]:也能顯示出來,這是什么格式的?、

A:jupyter notebook就是這種格式的。

Q 14 :點擊JupyterNotebook 下面的launch 沒反應(yīng)是怎么回事?

A:配置一下工作目錄 或者使用命令行打開


Q 15 :請問在Python上進(jìn)行復(fù)雜運算,可以有比較簡潔的輸入方法嗎?還有在Python上的運算符,有運行的先后順序嗎?計算貸款時,計算的代碼顯得很復(fù)雜,可讀性很差

A:可以化簡一下,運算是有優(yōu)先級的 不確定優(yōu)先級的情況下可以使用括號明確優(yōu)先級


圖3-9

Q 16 : 如圖(圖3-9),運行沒有結(jié)果

A:死循環(huán)了,用Kernel中的restart重啟一下。


圖3-10

Q 17 :如圖(圖3-10),運行沒有結(jié)果。

A:定義函數(shù)需要調(diào)用的


圖3-11

Q 18 : 作業(yè)3(圖3-11)不知道哪錯了。求教

A:因為少了float的右括號



圖3-12

Q 19 :計算部分的代碼都是對的,但是輸入 0 無法結(jié)束報告,這啥情況?

A:應(yīng)該是 if money == int(0):


Q 20 :怎么快速找到自己想要的數(shù)據(jù),求推薦!

A:一般網(wǎng)上有一些開放的數(shù)據(jù)集,國外的較多,比如

著名的UCI機(jī)器學(xué)習(xí)數(shù)據(jù)集 【 http://archive.ics.uci.edu/ml/ 】

Kaggle 競賽數(shù)據(jù) 【? https://www.kaggle.com/datasets 】

或者政府提供的開放數(shù)據(jù),比如

美國 DATA.GOV 【 https://www.data.gov 】

紐約 NYC OpenData 【 http://opendata.cityofnewyork.us? 】

The Humanitarian Data Exchange? 【 https://data.humdata.org 】

國內(nèi)的比較少,比如聚數(shù)力 【 http://dataju.cn/Dataju/web/dataDescriptionAndDataset 】

還有收費的數(shù)據(jù)堂

如果要獲取網(wǎng)頁數(shù)據(jù),可以自己編寫爬蟲工具來采集

有些網(wǎng)站提供數(shù)據(jù)的API接口,比如微博,但是數(shù)量和頻率非常有限制

想要獲取理想的數(shù)據(jù)本來就不是一件容易的事情,特別是在數(shù)據(jù)已被當(dāng)成寶藏的今天

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容