熱門:瘦小腿瘦小腿瘦小腿

  1. 首頁
  2. 科技日報
  3. 科技

你的資料科學python程式設計能力過關嗎?看看這40道題你能得幾分!長

  • 小白兔

  • 2018-10-12 19:11:10

Python越來越受資料科學愛好者的歡迎,這一現象是有一定原因的。它為整個生態系統帶來了一種通用的程式語言。通過Python,人們在一個生態系統中不僅可以轉換和操作資料,還可以建立強大的管道模型和機器學習的工作流。

在Analytics Vidhya(一家著名的國外大資料部落格,也是本文出處),我們都愛Python。我們中的大多數人使用Python作為機器學習的首選工具。除此之外,如果你想從事深度學習,在所有語言中,Python顯然擁有最成熟的生態系統。

本文福利:私信回覆【PDF】可獲取Python電子書一套如果你因為資料科學而學習Python,該測試可以幫助你評估自己的 Python程式設計能力。此測試屬於DataFest 2017(一個面向美國大學生的限時資料競賽)的一部分,一千三百多人蔘加了這一測試,其中有三百多人完成了測試。

以下是完成測試的人員得分的分佈情況:

點選這裡查詢最終成績,以下是對整體得分情況的一些統計:

平均分:14.16

得分中值:15

得分眾數:0

問題&答案

1、你一定看過電視劇“老爸老媽戀愛史”。那你還記得電視劇中主角們玩了一個遊戲,即每個人都要在某個人說了“但是,額”之後喝酒。我想把這個遊戲變換一下,如果你能借助技術手段來玩這個遊戲,情況又如何呢?

為了確定一個人在整個遊戲中會喝多少酒,你需要寫一組程式碼。

以下是字幕指令碼示例。

注意:Python正則表示式庫已被命名為“re”匯入。txt = '''450

00:17:53,457 --> 00:17:56,175

好的,但是,額,

你也加入我們啦,謝謝。

451

00:17:56,175 --> 00:17:58,616

但是,額,要是被學生看到,

452

00:17:58,616 --> 00:18:01,610

但是,額,但是,額,但是,額,

但是,額,但是,額,

453

00:18:01,610 --> 00:18:03,656

我們得喝酒啦,教授。

454

00:18:03,656 --> 00:18:07,507

規則就是規則。

她說了“但是,額”

455

00:18:09,788 --> 00:18:12,515

但是,額,但是,額,但是,額。。。

老天保佑。

下面哪段程式碼適合於處理這項任務?

A) len(re.findall(‘But, um’, txt))

B) re.search(‘But, um’, txt).count()

C) len(re.findall(‘[B,b]ut, um’, txt))

D) re.search(‘[B,b]ut, um’, txt)).count()

答案(C)

你必須同時識別出“but”的大小寫形式,所以選項C是正確的。

2.假設有下述程式碼

str = “””Email_Address,Nickname,Group_Status,Join_Year

[email protected],aa,Owner,2014

[email protected],bb,Member,2015

[email protected],cc,Member,2017

[email protected],dd,Member,2016

[email protected],ee,Member,2020

“””

為了只將域名從包含上述(例如“aaa”,“bbb”等等)郵箱地址字串中抽取出來,你寫了下列程式碼:

2)應當在上述橫線中填入哪個數字,從而做到只對域名進行索引定位?

注意:Python正則表示式庫已被命名為“re”匯入。

A) 0

B) 1

C) 2

D) 3

選項(C)

閱讀正則表示式re的語法

3.你的朋友提出了一個假設——“所有名字以字母“y”的發音(音同“/i/”)結尾的人都(例如Hollie)很聰明。” 請注意:名字應以“y”的發音(“/i/”)結尾而不是僅僅以字母“y”結尾。

現在你是一個數據狂人,通過從大學官網上抓取資料來挑戰這個假設。下表為你收集到的資料。

Name

Marks

Andy

0

Mandi

10

Sandy

20

Hollie

18

Molly

19

Dollie

15

你想要用一個列表列出所有屬於此類別的人,因此你寫了下列程式碼:

3)用正則表示式怎麼給“pattern”賦值?

注意:Python正則表示式庫已被命名為“re”匯入。 A) pattern = ‘(i|ie)(,)’

B) pattern = ‘(i$|ie$)(,)’

C) pattern = ‘([a-zA-Z]+i|[a-zA-Z]+ie)(,)’

D) None of these

答案(B)

你需要找到以“i”或“ie”結尾的模式。所以B是正確的。

4.假設,有兩個列表:

a = [1,2,3,4,5]

b = [6,7,8,9]

要求建立一個一維列表包含a和b中的所有元素。

輸出結果為

a = [1,2,3,4,5,6,7,8,9]

4)下列哪項是正確的?

A) a.append(b)

B) a.extend(b)

C) Any of the above

D) None of these

答案(B)

只有B是正確的。

5.你已經建立了一個機器學習模型,你希望現在鎖定這個模型以便日後使用。下面哪條指令可以做到這一點?

注意:Pickle庫已被命名為“pkl”匯入。A) push(model, “file”)

B) save(model, “file”)

C) dump(model, “file”)

D) freeze(model, “file”)

答案(C)

只有C是正確的。

6.我們希望將下述字串轉換成data-time的形式。

6)為了轉換上述字串,在data_format處該寫入下列哪種格式?

A) “%d/%m/%y”

B) “%D/%M/%Y”

C) “%d/%M/%y”

D) “%d/%m/%Y”

答案(D)

只有D是正確的。

7.我已經為一個影象識別問題建立了一個簡單的神經網路。現在,我想要測試一下我是否為隱藏層分配了正確的權重和偏差值。為了執行這一操作,我給出了一個單位矩陣作為輸入。下述是我的單位矩陣:

A = [ 1, 0, 0

0, 1, 0

0, 0, 1]

7)你怎麼用Python建立這個單位矩陣?

注意:numpy庫已被命名為“np”匯入。

A) eye(3)

B) np.identity(3)

C) np.array([1, 0, 0], [0, 1, 0], [0, 0, 1])

D) All of these

答案(A)

選項B不存在。選項C的語法是錯誤的。所以正確答案為A。

8

8)要檢查兩個陣列是否佔用相同的空間,你應該怎麼做?

我有兩個numpy陣列“e”和“f”。

當你輸出“e”和“f”時會得到下列值。

當你改變第一個陣列的值的時候,第二個陣列的值也會變化。這就為處理資料造成了麻煩。

例如,如果你將陣列e中前五個數設為0;

最終e和f的值為:

你推測這兩個陣列一定被分配了相同的空間。

A)檢查這兩個陣列的記憶體,如果記憶體相同則表示陣列佔用相同空間。

B)輸入“np.array_equal(e, f)”,如果輸出值為“True”,則表示兩個陣列佔用相同空間。

C)通過e.flags和f.flags輸出兩個陣列的標誌;檢查標誌“OWNDATA”。如果有一個為“False”,那麼兩個陣列被分配到了同一空間。

D)以上皆錯。

答案(C)

只有C是正確的。

9.假設你想要把訓練和測試資料集(都由train_set和test_set兩個numpy陣列構成)放入結果陣列中,以便同時處理這些資料。方法如下:

9)該如何新增這兩個陣列?

注意:Numpy庫已被命名為“np”匯入。

A) resulting_set = train_set.append(test_set)

B) resulting_set = np.concatenate([train_set, test_set])

C) resulting_set = np.vstack([train_set, test_set])

D) None of these

答案(C)

選項A和B可以進行水平堆疊(horizontal stacking),但是我們需要將陣列進行垂直堆疊(vertical stacking)。所以C選項是正確的。

10.假設你為Iris資料集除錯一個隨機森林分類器的超引數。

10)“ random_state (Seed value)”的最佳值為?

A) np.random.seed(1)

B) np.random.seed(40)

C) np.random.seed(32)

D) 無法判斷

答案(D)

沒有最佳的種子值,這與資料有關。

11.在使用numpy讀一個csv檔案時,你希望能用“01/01/2010”自動替換“Date_Of_Joining”一列中的缺失值。

11)下列哪個命令在讀取有numpy的檔案時,能填充表中的空值?

注意:numpy已被匯入為np。

A) filling_values = (“-“, 0, 01/01/2010, 0)

temp = np.genfromtxt(filename, filling_values=filling_values)

B) filling_values = (“-“, 0, 01/01/2010, 0)

temp = np.loadtxt(filename, filling_values=filling_values)

C) filling_values = (“-“, 0, 01/01/2010, 0)

temp = np.gentxt(filename, filling_values=filling_values)

D) None of these

正確答案:(A)

A選項是正確選項。

12

12)在sklearn包中如何匯入決策樹分類(decision tree classifier)?

A) from sklearn.decision_tree import DecisionTreeClassifier

B) from sklearn.ensemble import DecisionTreeClassifier

C) from sklearn.tree import DecisionTreeClassifier

D) None of these

答案:(C)

C選項是正確答案

13

13)你在google製表程式裡上傳並公開分享了一個csv格式的資料集。你想在python中獲取它,你應該如何實現這一點?

注意:庫檔案StingIO已經匯入為StringIO。

D)以上選項都不正確

正確答案:(A)

A選項是正確答案。

14.假設你有一個已經在pandas包里加載的,2列3行的資料框架(dataframe)訓練檔案。

pandas已經匯入為pd。

train = pd.DataFrame({'id':[1,2,4],'features':[["A","B","C"],["A","D","E"],["C","D","F"]]})

現在你想在“features”列中使用lambda函式:

train['features_t'] = train["features"].apply(lambda x: " ".join(["_".join(i.split(" ")) for i in x]))

14)下列列印命令的輸出結果是什麼?

print train['features_t']

A)

0 A B C

1 A D E

2 C D F

B)

0 AB

1 ADE

2 CDF

C) Error

D) None of these

D)上述選項都不對

答案:(A)

A選項是正確答案。

15.現在考慮一個多類別分類問題。這個問題將通過酒的各屬性值來預測它的品質。資料已經裝載進一個數據框架“df”,如下表所示

現在quality列中有值1到10,現在我們想用二值分類問題來替換他們。你想將臨界值設定為5,這樣的話如果值大於5,輸出結果為1,否則輸出為0.

15)下列哪個程式碼能幫助你完成這項任務?

注意:Numpy已被作為np匯入,資料框設為df。

答案:(A)

A選項是正確答案。

16.假設我們編寫了如下資料框:

16)下列給出的兩組資料系列有什麼差別?

1. df[‘Name’] and

2. df.loc[:, ‘Name’]

注意:Pandas已經作為pd匯入。

A) 2 is view of original dataframe and 1 is a copy of original dataframe.

B) 1 is view of original dataframe and 2 is a copy of original dataframe.

C) Both are copies of original dataframe.

D) Both are views of original dataframe

答案:(B)

B選項是正確答案。

17.假設有一個定義如下的函式“fun”:

現在定義一個包含三個數的list:

g = [10,11,12]

17)下列表達的輸出結果是什麼:

print fun(g), g

A) [5, 11, 12] [5, 11, 12]

B) [5, 11, 12] [10, 11, 12]

C) [10, 11, 12] [10, 11, 12]

D) [10, 11, 12] [5, 11, 12]

Solution: (A)

答案:A

A選項是正確答案。

18.Sigmoid函式通常用於建立一個神經網路啟用函式。一個Sigmoid函式的定義如下:

18)我們必須學會找出sigmoid函式的導數,這在反向傳播演算法中十分重要。下列哪個選項能得到該導數?

D)上述選項均不正確

正確答案:(C)

C選項是正確選項。

19.假設有一系列用電量的按月統計資料,你要將他們轉化為按日統計的資料,例如

首先你需要將每個月的資料展開(假設每個月都有30天)

19)以下那段程式碼能夠實現這個需求

注意:Numpy已被作為np匯入,資料框設為df。

A) new_df = pd.concat([df]*30, index = False)

B) new_df = pd.concat([df]*30, ignore_index=True)

C) new_df = pd.concat([df]*30, ignore_index=False)

D) None of these

答案:B

答案B是正確的

20.假設你有這麼一個數據框架 df

20)你想將’Count’列的名稱改成’Click_Count’,為此你用瞭如下程式碼:

df.rename(columns = {'Count':'Click_Count'})

以下這段程式碼的輸出結果是?

print df.columns

注意:Pandas庫已經以pd的縮寫匯入

A) [‘Click_Id’, ‘Click_Count’]

B) [‘Click_Id’, ‘Count’]

C) Error

D) None of these

答案:B

選項B是正確的

21

21)在許多資料科學工程中,你需要將資料框架轉換成字典。假設你要將‘df’轉成一個數據字典,‘Click_Id’作為鍵,‘Count’作為每個鍵對應的值。以下哪個選項會得到這個結果

注意:Pandas庫已經以pd的縮寫匯入

A) set_index(‘Click_Id’)[‘Count’].to_dict()

B) set_index(‘Count’)[‘Click_Id’].to_dict()

C) We cannot perform this task since dataframe and dictionary are different data structures

D) None of these

答案:A

選項A是正確的

22

22)假設你想用以下表達式將df賦值給df1,這樣你就可以在將來需要時從df1中獲得df的初始內容

df1 = df

Now you want to change some values of “Count” column in df.

現在你想改變df中‘Count’列的一些值

df.loc[df.Click_Id == 'A', 'Count'] += 100

Which of the following will be the right output for the below print statement?

以下表達式輸出的結果是?

print df.Count.values,df1.Count.values

Note: Pandas library has been imported as pd.

注意:Pandas庫已經以pd的縮寫匯入

A) [200 200 300 400 250] [200 200 300 400 250]

B) [100 200 300 400 250] [100 200 300 400 250]

C) [200 200 300 400 250] [100 200 300 400 250]

D) None of these

答案:A

選項A是正確的

23

23)你寫了一段處理資料的程式碼,這段程式碼執行耗時很長。你想通過給程式碼加上書籤來記錄每行程式碼執行的時間以便有針對性的修改。你可以採用以下哪些步驟

1.用time.sleep()作為書籤來記錄每行程式碼“睡”了多久

2.用time.time()作為書籤記錄每行程式碼耗時多長

3.用detetime.timedelta()作為書籤以記錄每段程式碼執行的時間差值

4.你將整段程式碼拷貝到Ipython/Jipyter記事本中,給每段程式碼加一個斷點,然後在每個斷點使用 %%timeit

A) 1 & 2

B) 1,2 & 3

C) 1,2 & 4

D) All of the above

Solution: (C)

Option C is correct

答案:C

選項C是正確的

24

24)你要怎麼利用pandas模組從檔案中讀取資料並且跳過前三行?

注意:panda庫已經被命名為”pd”匯入到給出的檔案中(email.csv),最前面的三行記錄為空。

A) read_csv(‘email.csv’, skip_rows=3)

B) read_csv(‘email.csv’, skiprows=3)

C) read_csv(‘email.csv’, skip=3)

D) None of these

答案(B)

選項B是正確的

25

25)在”method”處應該填些什麼內容,使得程式能夠輸出想要的結果?

下面為資料框”df”:

現在,你想要知道BMI和性別會否影響銷售額。

因此你想要繪製一幅如下圖所示的條狀圖:

對應的程式碼為:

A) stacked=True

B) stacked=False

C) stack=False

D) None of these

答案:(A)

這是一幅堆疊條狀圖。

26

26)假設已知兩列表——City_A 和 City_B。

City_A = [‘1′,’2′,’3′,’4’]

City_B = [‘2′,’3′,’4′,’5’]

兩個城市中有一些值是一樣的。下列哪一段程式碼可以找到所有在“City_A” 但不在 “City_B”中的城市名?

A) [i for i in City_A if i not in City_B]

B) [i for i in City_B if i not in City_A]

C) [i for i in City_A if i in City_B]

D) None of these

答案:(A)

選項A是正確的

27

假設你正在嘗試利用pandas模組讀取檔案”temp.csv”,然後你收到了如下錯誤提醒:

27)下列哪一個選項可能改正上述錯誤?

注意:pandas模組已被命名為”pd”後匯入

A) pd.read_csv(“temp.csv”, compression=’gzip’)

B) pd.read_csv(“temp.csv”, dialect=’str’)

C) pd.read_csv(“temp.csv”, encoding=’utf-8′)

D) None of these

答案:(C)

選項C是正確的,因為編碼應為”utf-8”。

28

28)假設你正在定義如下元組:

tup = (1, 2, 3, 4, 5 )

現在,你想要將元組的值的第二個值改為10,下列哪項能夠滿足條件?

A) tup(2) = 10

B) tup[2] = 10

C) tup{2} = 10

D) None of these

答案:(D),元組的值不能被修改。

29

29)你想要訪問一個url(統一資源定位符)為www.abcd.org的網頁,下列哪一個選項能夠完成這項任務?

A) urllib2.urlopen(www.abcd.org)

B) requests.get(www.abcd.org)

C) Both A and B

D) None of these

答案(C)

選項C是正確的

30

30)你要使用BeautifulSoup來讀取這個網頁的標題,請問哪一段程式碼能實現這個功能?

提示:你需要利用標題標籤提取文字

A. from bs4 import BeautifulSoup

soup =BeautifulSoup(html_doc,’html.parser’)

print soup.title.name

B. from bs4 import BeautifulSoup

soup =BeautifulSoup(html_doc,’html.parser’)

print soup.title.string

C. from bs4 import BeautifulSoup

soup=BeautifulSoup(html_doc,’html.parser’)

print soup.title.get_text

D. None of these

答案:(B)

選項B是正確的

31

想象一下你得到了一個形式如下所示的資料框列表

D = [‘A’,’B’,’C’,’D’,’E’,’AA’,’AB’]

現在,你想要通過LabelEncoder將標註編碼應用在這個列表上來進行匯入及變換。

31)下面語句的輸出是什麼?

print le.fit_transform(D)

A. array([0, 2, 3, 4, 5, 6, 1])

B. array([0, 3, 4, 5, 6, 1, 2])

C. array([0, 2, 3, 4, 5, 1, 6])

D. Any of the above

答案:( D )

選項D是正確的

32

32)下面語句的輸出是?

print df.val == np.nan

假設你已經定義了一個含有兩列的資料框。

A) 0 False

1 False

2 False

3 False

B) 0 False

1 False

2 True

3 False

C) 0 True

1 True

2 True

3 True

D) None of these

答案:(A)

選項A是正確的

33

33)假設資料儲存於HDFS,你想知道資料是以什麼結構排列的。下列哪個命令可以幫助你找到HDFS對應的鍵?

注意:HDFS檔案已由h5py安裝並命名為”hf”.

A) hf.key()

B) hf.key

C) hf.keys()

D) None of these

答案:(C)

選項C是正確的

34

已知電影評論如下:

reviews = [‘movie is unwatchable no matter how decent the first half is . ‘, ‘somewhat funny and well paced action thriller that has jamie foxx as a hapless fast talking hoodlum who is chosen by an overly demanding’, ‘morse is okay as the agent who comes up with the ingenious plan to get whoever did it at all cost .’]

你的任務是從上述評論中發現評論者的情緒。為此你首先寫了一段程式碼來計算評論中的單詞數。

34)我們應該選取哪一個分隔符來計算單詞數?

A. ‘ ‘

B. ‘,’

C. ‘.’

D. None of these

答案:(A)

選項A是正確的

35

35)在下圖中,應該如何設定線的寬度?

針對上圖,生成該圖片的程式碼為

A. In line two, write plt.plot([1,2,3,4], width=3)

B. In line two, write plt.plot([1,2,3,4], line_width=3

C. In line two, write plt.plot([1,2,3,4], lw=3)

D. None of these

答案:(C)

選項C是正確的

36

36) 如何重置已知列表資料框的索引?新的索引如下:

new_index=[‘Safari’,’Iceweasel’,’Comodo Dragon’,’IE10′,’Chrome’]

注意:df是一個pandas模組資料框

A) df.reset_index(new_index,)

B) df.reindex(new_index,)

C) df.reindex_like(new_index,)

D) None of these

答案:(A)

選項A是正確的

37

37)基於乘客艙位類別決定他們的倖存比例

A. crosstab(df_train[‘Pclass’], df_train[‘Survived’])

B. proportion(df_train[‘Pclass’], df_train[‘Survived’])

C. crosstab(df_train[‘Survived’], df_train[‘Pclass’])

D. None of these

答案:(A)

選項A是正確的

38

38)你想要寫一個通用類來生成文字的ngram。例如一個句子“This is a sample text”的2-gram版本如下:[[“this, “is”], [“is”, “a”], [“a, “sample”], [“sample”, “text”]]

下列哪段程式碼是正確的?

A. def generate_ngrams(text, n):

words = text.split(‘ ’)

output = [] for i in range(len(words)-n+1):

append(words[i+1:i+n])

return output

B. def generate_ngrams(text, n):

words = text.split()

output = [] for i in range(len(words)-n+1):

append(words[i:i+n])

return output

C. def generate_ngrams(text, n):

words = text.split()

output = [] for i in range(len(words)-n+1):

append(words[i+1:i+n])

return output

D. None of these

答案:(B)

選項B是正確的

39

39)下列哪句程式碼將輸出CSV檔案中隱藏了索引和頭部的編碼為UTF-8的資料框?

A. df_1.to_csv(‘../data/file.csv’,encoding=’utf-8′,index=True,header=False)

B. df_1.to_csv(‘../data/file.csv’,encoding=’utf-8′,index=False,header=True)

C. df_1.to_csv(‘../data/file.csv’,encoding=’utf-8′,index=False,header=False)

D. None of these

答案:(C)

選項C是正確的

40

下列哪一項是對mean squared error (均方誤差,MSE) 的正確實現?

注意:numpy庫已經被命名為”np”匯入

A. def MSE(real_target, predicted_target):

return np.mean((np.square(real_target) – np.square(predicted_target)))

B. def MSE(real_target, predicted_target):

return np.mean((real_target – predicted_target)**2)

C. def MSE(real_target, predicted_target):

return np.sqrt(np.mean((np.square(real_target) – np.square(predicted_target))))

D. None of the above

答案:(B)

選項B是正確的

結語

如果你正在學習Python,請確保自己通過上面的測試。這不僅會幫你評估技能,也可以幫你看清自己在整個學習群體中的位置。如果你有任何疑問,請隨時在下方評論。

好好學習,接受挑戰,努力程式設計,找個好工作!

推薦您的文章

其他文章