【譯】技能測試解決方案:Python中的數據科學(一)

本文是譯文,能夠轉載,但需註明出處,點擊這裏能夠獲取原文,有刪減。
本系列博文包含四篇文章:
【譯】技能測試解決方案: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及其解釋

相關文章
相關標籤/搜索