第六課作業
作業1:
計算每個品種鳶尾花各個屬性(花萼、花瓣的長度和寬度)的最小值、平均值又是分別是多少? (提示:使用min、mean 方法。)
計算鳶尾花每個品種的花萼長度(sepal_length) 大于6cm的數據個數。
作業2:
分別找出2015, 2016年最流行的前10個男孩和女孩名字, 想給自己起一個流行的英文名字的可以行動起來了。
提示:使用groupby().apply()
思路一,使用ranked這一列, 取其值小于等于10的數據
思路二,使用pct這一列,用sort_values方法對其排列大小,取最大的10行數據
選做作業:餐館小費數據分析
小費,指給予服務生消費額以外的賞錢,在美國餐館用餐完后通常會給服務生15-20%的小費。
這個數據是由Bryant和Smith于1995年所著的商務統計上的一個數據
分析什么因素會影響小費比例?
一個優秀的數據分析員一定是一個可以提出有意義問題的人
好的數據分析員往往可以根據商業背景提出一些假說,然后通過數據來驗證這些假說。
選做作業可以以文章的形式提交。
答疑Q&A目錄:
1,代碼運行出錯
2,數據導入
3,代碼方法
4,數據導入
5,代碼理解:max=None
6,參考書
7,代碼運行出錯:字典
8,代碼運行出錯
9,數據導入
10,數據導入
11,數據導入:path
12,代碼運行出錯
13,代碼理解:df[ ]
14,代碼理解:引號
15,代碼理解:圓括號
16,代碼理解:層次化索引
17,代碼理解:無效句法
18,代碼理解:unique
19,方法優化:設備同步代碼
第一問開始啦!!
Q 1 :請問:我做這個圖(圖1),為什么Africa,的紅色點沒有生成呢,標題里都生成了的.
A :ociean=df.....=='africa'漏改了
Q 2 :嬰兒數據導入不了,請問哪里出了問題
A1:我懷疑是目錄中含中文,改個path試試
A2: 我重新把文件復制到軟件默認目錄了,可以導入了
Q 3 :第五課選做作業中,把各大洲的國家數量用value_counts統計出來,生成的是一個series類型的結果,如何把這個series轉換成DataFrame進行分析?或者,如何提取這個series類型里的數據呢?比如,我要看哪個洲國家數量最多。
A:看下pandas中series提供方法,有idxmax和max。應該可以滿足你的需求,去了解下。
Q 4 :如何正確下載github上的文件?我以前下載文件都必須是點進去然后把內容全選復制到自己的txt文件里,因為每次直接下載的文件都是有問題的,如上圖(圖2),只有自己打開txt文件自己復制才行。其實我到現在也不知道github到底是怎么把資料完整下載到電腦里的,以前都是一個文件,這一次碰上這么多文件直接懵了,總不能一個一個打開然后再全選復制吧?
A1 : git hub官方有使用方法介紹的教程,可以查一下,可以用代碼把資料下到本地并且同步更新,也很快很便捷的。隔壁javascript課的徐老師做的教程供你參考一下。https://github.com/xugy0926/getting-started-with-javascript/wiki/%E7%AC%AC%E4%B8%80%E6%AC%A1%E4%BD%BF%E7%94%A8Git
https://github.com/xugy0926/getting-started-with-javascript/blob/master/topics/%E5%A6%82%E4%BD%95%E4%BB%8E%E4%B8%BB%E9%A1%B9%E7%9B%AE%E6%9B%B4%E6%96%B0fork%E7%9A%84%E9%A1%B9%E7%9B%AE.md
A 2: 剛才按Polo老師的方法,輕松導入了。同學可以先把課件下載到自己的硬盤,在notebook里新建一文件夾,命名為names,點開后點upload按鈕,然后就可以選擇硬盤文件路徑,打開names文件夾全選,文件就全跑到notebook了,再逐一點txt文件的upload就OK了。
Q 5 :我自己實現了一下agg自帶的max函數。
有個問題是,之前老師有些max=None,但是這么寫報i和max不是一個類型。有點郁悶。
# 手動實現max
def manual_max(arr):
max = 0
for i in arr:
if (i > max):
max = i
return max
#manual_max(iris.sepal_length)
iris.groupby('species').agg({'sepal_length':[manual_max]})
A :對啊,不是一個類型,所以老師有個判斷
if max is None:
max = i
類似這樣的操作。
Q 6 :前面課中提到的關于數據分析的參考書是哪一本啊?
A :《利用python進行數據分析》
Q 7 :錯誤:If using all scalar values, you must pass an index。各位高手能看出原因嗎?生成不了DataFrame(圖3)
A :只有一列參數的不能生成字典,但是可以是series。關于字典合并的問題,可以編寫代碼實現。
Q 8 :每次重啟jupyter,定義過的函數找不到媽,所以有沒有什么很好用的句型,直接把函數套上?還是說最簡單的方法是找到最初定義的那一句,重復一遍?(圖4)
A1 :kernel那一欄有個restart and run all。run all了應該in[ ]每個框里都有數字序號的。
A2 : 因為你第一個錯了,后面的就不會執行了。word_count is not defined
A3 :iris.species.value_count( )
Q 9 :請問“名字name ”文件導入有特別的方法嗎?是每年逐一導入嗎?
A :使用for 循環 一塊導入每一年的文件,然后合并,成一個DATA
Q 10 :大數據如何導入到python?(圖5)
A1 : 文件是直接導入jupter notbook的,沒有放在names文件夾里,所以path=……里面names/去掉
A2 : 要把整個路徑都拷貝進去,我遇過跟你一樣的問題
Q 11 :數據導入的path在哪兒查?
A:如果是mac看我的截圖(圖6),jupternotebook的工作路徑mac可能是ducument下面,拷貝之后,后面再加上/names那些就可以了(就是文件名)。
Q 12 :請問使用plt.xlim為什么報錯'tuple' object is not callable呢?(圖8)
使用plt.ylim(0,9) 沒報錯。
A:不一定是ylim沒錯,可能只是運行到xlim報了錯就停了,類型是數組,確實沒錯,你看看之前的代碼對不對
Q追問 :我在老師的jupyter課件里執行plot.xlim沒報錯,自己新建了一個jupyter notebook文件執行plot.xlim 就報錯了,但plot.ylim就不報錯
A:把老師代碼里的plt.xlim()復制過來試試,沒問題的話,把你的xlim復制過去試試,有問題的話,就是你前面的錯誤了
Q追問:在我新建的里面執行我自己寫的xlim 和老師的xlim代碼都有問題,在老師建的jupyter里執行老師的xlim 和我自己寫的xlim都沒問題。然后我自己還寫了一個下圖在我自己里的有問題,在老師里的沒問題,所以可能是環境的問題而不是代碼的問題
A:%
%
那兩行你是不是漏打了。
新建一個試試
Q追問 :我重新建了一個后發現竟然不報錯了,看來可能是jupyter有點小bug
Q 13 :這個df[ ]是什么意思?(圖9)
A1: 取得一個表格,== 是一個判斷,values[values.country=='China'] 這個是一個布爾運算。意思就是1. 先得到一個過濾用的篩子;2. 用這個篩子 過濾出 series為 true 的那一行
Q 14 :內置函數要用字符串圈起來 max沒用雙引號也可以 但是 mean去掉雙引號就報錯了,為什么?(圖10)
A :因為max是python內置、pandas也支持的,mean不是Python內置的,但是pandas實現。agg中,pandas的內置,需用引號,而python內置的不需用引號。
Q 15 :這個返回值,我試了下 ,不帶括號也行 ,帶上圓括號也行,所以圓括號是種習慣嗎?(圖11)
A:python的內置和我們自定義的函數,對于pandas的agg函數是一樣的。return 習慣都是不帶括號吧,這應該是魚老師的習慣
Q 16 :series可以有兩個index嗎?(圖12)
A:對的,層次化索引
Q 17 :這里一直提示 America那里有一個 無效句法,但是我不知道問題在哪里?(圖13)
A :變量名不能有空格哦,可以用North_American代替North American
Q 18 :使用unique統計的時候,這里有空格。是因為這里不是變量名,是dadaframe的一個數值,所以允許?(圖14)
A :對的,解釋的非常對
Q 19 :我在辦公室運行的代碼,保存在Notebook里,請問有辦法 能把保存的內容同步到 家里的電腦上嗎?
A :直接把文件夾拷貝過去就好了。
最后兩個小彩蛋:
1,下圖(圖15)是Polo老師推薦的額外知識:關于python中的變量名和標識符
2,Tiger老師推薦文章:【鏈接】萬能的Python背后:這6大原因讓它爆火https://mp.weixin.qq.com/s/qgJt2ygmrhGhsXQwez5fFw
趕上進度!趕上進度!來!睡覺!