本文是譯文,能夠轉載,但需註明出處,點擊這裏能夠獲取原文,有刪減。
本系列博文包含四篇文章:
【譯】技能測試解決方案:Python中的數據科學(一)——Q1-Q15
【譯】技能測試解決方案:Python中的數據科學(二)——Q16-Q30
【譯】技能測試解決方案:Python中的數據科學(三)——Q31-Q45
【譯】技能測試解決方案:Python中的數據科學(四)——A1-A45及其解釋
簡介:
Python在數據科學界正在迅速發展。 咱們愈來愈傾向於使用這樣的生態系統——數據科學家對多種工具感到溫馨,並根據特殊狀況和堆棧使用正確的工具。
若是你打算把Python做爲數據科學的首選工具,或正在學習它,那這是檢查你技能的絕好機會。
技能測試問題
Q1
python
上述數據集包含分類型和連續型變量,每一個數據科學家都應該明白處理二者的方法不大同樣。
下列代碼中,哪一項能計算出數據集中分類型變量的個數?算法
A - (train.dtype == 'object').sum() B - (train.dtypes == object).sum() C - (train.dtypes == object).count() D – 以上選項都不能
Q2
segmentfault
上述數據集中有多個分類型變量,每個分類型變量都有多個分類值。如,「Married」 變量就有兩個分類值———— 「Yes」 and 「No」。
下列代碼中,哪一項能計算出「Education」變量的不一樣分類值?app
A - train.Education.individuals() B - train.Education.distinct() C - train.Education.unique() D – 以上選項都不能
Q3
機器學習
咱們發現,上述數據集中,「LoanAmount」變量有許多缺失值。
下列代碼中,哪一項能統計出「LoanAmount」變量的缺失值數量?工具
A - train.count().maximum() - train.LoanAmount.count() B - (train.LoanAmount == NaN).sum() C - (train.isnull().sum()).LoanAmount D – 以上選項都能
Q4
學習
上述數據集中,「Credit_History」變量也有不少缺失值,咱們首先須要分析「Credit_History」變量非空的用戶羣。
咱們建立一個叫 「new_dataframe」的數據框,該數據框包含「train」數據框中「Credit_History」變量非空的樣本。
下列哪行代碼能夠實現這個需求:測試
A - new_dataframe = train[~train.Credit_History.isnull()] B - new_dataframe = train[train.Credit_History.isna()] C - new_dataframe = train[train.Credit_History.is_na()] D – 以上選項都不能
Q5
spa
在上述數據集中,咱們發現 Loan_id = LP001005的樣本含有較少的信息(如:大多數變量都爲空)。建模過程當中,這類樣本會產生較大的噪音,所以,建議過濾掉這類樣本。
若是一個樣本中5個變量值爲空,咱們決定剔除它們,並把剩餘的數據集存放在一個叫「temp」的數據框中。
下列哪行代碼能夠實現這個需求:3d
A - temp = train.dropna(axis=0, how='any', thresh=5) B - temp = train.dropna(axis=0, how='all', thresh=5) C - temp = train.dropna(axis=0, how='any', thresh=train.shape[1] - 5) D – 以上選項都不能
Q6
接下來,咱們進行數據切片操做。第一個合理的操做是使數據知足建模需求。在上述數據中,咱們發現, 「Property_Area」 變量含有較少的「Semiurban」值。所以,咱們決定把 「Semiurban」 和 「Urban」合併成一個新的類,並把這個類命名爲「City」類,除此以外,咱們還把「Rural」 重命名爲 「Village」。
下列哪行代碼能夠實現這個需求:
A - >>> turn_dict = ['Urban': 'City', 'Semiurban': 'City', 'Rural': 'Village'] >>> train.loc[:, 'Property_Area'] = train.Property_Area.replace(turn_dict) B - >>> turn_dict = {'Urban': 'City', 'Semiurban': 'City', 'Rural': 'Village'} >>> train.loc[:, 'Property_Area'] = train.Property_Area.replace(turn_dict) C - >>> turn_dict = {'Urban, Semiurban': 'City', 'Rural': 'Village'} >>> train.iloc[:, 'Property_Area'] = train.Property_Area.update(turn_dict) D – 以上選項都不能
Q7
到目前爲止,你離創建第一個模型又進了一步。也許你會發現一些比較有趣的事情:「Gender」變量取值爲「Male」且「Married」變量取值爲「Yes」的用戶佔比較高。
下列哪行代碼能夠檢驗這個假設?
A - (train.loc[(train.Gender == 'male') && (train.Married == 'yes')].shape[1] / float(train.shape[0]))*100 B - (train.loc[(train.Gender == 'Male') & (train.Married == 'Yes')].shape[1] / float(train.shape[0]))*100 C - (train.loc[(train.Gender == 'male') and (train.Married == 'yes')].shape[0] / float(train.shape[0]))*100 D – 以上選項都不能
Q8
上述數據是訓練集和測試集,注意到兩個集合的變量並不匹配,如:訓練集中有些字段並不在測試集中,反之亦然。
假設兩個集合均已「數據框」的形式入庫,下列哪行代碼能夠找出測試集存在可是訓練集不存在的變量:
A - set(test.columns).difference(set(train.columns)) B - set(test.columns.tolist()) - set(train.columns.tolist()) C - set(train.columns.tolist()).difference(set(test.columns.tolist())) D – 以上選項都不能
Q9
或許你會注意到,Python中絕大多數機器學習庫及相應的算法都要求數據以數字的方式呈現。
所以,咱們須要對「Gender」變量進行轉換,如:M轉換成1,F轉換成0。
下列哪行代碼能夠實現這個需求?
A - train.ix[:, 'Gender'] = train.Gender.applymap({'M':1,'F':0}).astype(int) B - train.ix[:, 'Gender'] = train.Gender.map({'M':1,'F':0}).astype(int) C - train.ix[:, 'Gender'] = train.Gender.apply({'M':1,'F':0}).astype(int) D – 以上選項都不能
Q10
在上述數據集中,「Product_ID」一欄數據包含已售產品的惟一標識。可能出現這種狀況:一些產品出如今測試集可是不出如今訓練集中,這給建模形成必定的難度,由於對於新產品而言,沒有它的「歷史」信息。
下列哪行代碼能夠驗證測試集中的「Product_ID」是訓練集的子集?
A - train.Product_ID.unique().contains(test.Product_ID.unique()) B - set(test.Product_ID.unique()).issubset(set(train.Product_ID.unique())) C - train.Product_ID.unique() = test.Product_ID.unique() D – 以上選項都不能
Q11
上述數據中,「Age」 變量是一個分類型變量,把它轉換成一個數值型變量或許更有意義。
下列哪行代碼能夠實現把「Age」 變量的組平均值代替原始值。如:以8.5和21代替0-17和17-25?
A - train['Age'] = train.Age.apply(lambda x: (np.array(x.split('-'), dtype=int).sum()) / x.shape) B - train['Age'] = train.Age.apply(lambda x: np.array(x.split('-'), dtype=int).mean()) C – A和B均可以 D – 以上選項都不能
Q12
實際數據中,有一種情景是,數值型變量的值隱藏在某一個字符型變量中,建模前,咱們必須清洗此類變量。
例如:上述數據集中,「Ticket」變量包含一個或者兩個模塊,現假設咱們所需數值始終存在該變量的最後一個模塊中。
下列哪行代碼能夠實現這個需求?
A - train.Ticket.str.split(' ').str[0] B - train.Ticket.str.split(' ').str[-1] C - train.Ticket.str.split(' ') D – 以上選項都不能
Q13
或許你已注意到,上述數據集是著名的泰坦尼克號數據集。該數據有不少缺失值,處理缺失值的一種方法是用「已知值」填充。
咱們決定對 「Age」變量進行以下填充:用同性別的「Age」的平均值填充,下列哪行代碼能夠實現這個需求?
A - train = train.groupby('Sex').transform(lambda x: x.fillna(x.sum())) B - train['Age'] = train.groupby('Sex').transform(lambda x: x.fillna(x.mean())).Age C - train['Age'] = train.groupby('Sex').replace(lambda x: x.fillna(x.mean())).Age D – 以上選項都不能
Q14
接下來,咱們想知道乘客的位置是怎樣影響乘客的生存機率的,一個假設是,「S」 (S=SouthHampton)的乘客,尤爲是女性乘客,在此次事故中生存機率會很是高。
問題是,怎樣計算來自「S」的女性乘客數量?
A - train.loc[(train.Embarked == 'S') and (train.Sex == 'female')].shape[0] B - train.loc[(train.Embarked == 'S') & (train.Sex == 'female')].shape[0] C - train.loc[(train.Embarked == 'S') && (train.Sex == 'female')].shape[0] D – 以上選項都不能
Q15
仔細觀察「Name」變量,貌似每一個「Name」都含有一個頭銜,例如:「Braund, Mr. Owen Harris」含有「Mr.」頭銜。
下列哪行代碼能夠統計出乘客姓名中含有「Mr.」頭銜的數量?
A - (train.Name.str.find('Mr.')==False).sum() B - (train.Name.str.find('Mr.')>0).sum() C - (train.Name.str.find('Mr.')=0).sum() D – 以上選項都不能
友情連接:
【譯】技能測試解決方案:Python中的數據科學(二)——Q16-Q30
【譯】技能測試解決方案:Python中的數據科學(三)——Q31-Q45
【譯】技能測試解決方案:Python中的數據科學(四)——A1-A45及其解釋