數(shù)據(jù)采集與處理-復(fù)習(xí)思考題與答案-3-Numpy與Pandas基礎(chǔ)_第1頁(yè)
數(shù)據(jù)采集與處理-復(fù)習(xí)思考題與答案-3-Numpy與Pandas基礎(chǔ)_第2頁(yè)
數(shù)據(jù)采集與處理-復(fù)習(xí)思考題與答案-3-Numpy與Pandas基礎(chǔ)_第3頁(yè)
數(shù)據(jù)采集與處理-復(fù)習(xí)思考題與答案-3-Numpy與Pandas基礎(chǔ)_第4頁(yè)
數(shù)據(jù)采集與處理-復(fù)習(xí)思考題與答案-3-Numpy與Pandas基礎(chǔ)_第5頁(yè)
已閱讀5頁(yè),還剩8頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

《數(shù)據(jù)采集與處理:基于Python》復(fù)習(xí)思考題、習(xí)題與答案第三章Numpy與Pandas基礎(chǔ)1、計(jì)算numpy中元素個(gè)數(shù)的方法是?A、np.sqrt()B、np.size()C、np.identityD、np.len()答案:B2、已知c=np.arange(16).reshape(2,4,2)那么c.sum(axis=0)所得的結(jié)果為?A、array([[12,16],[44,48],[76,80]])B、array([[1,5,9,13],[17,21,25,29],[33,37,41,45]])C、array([[24,27],[30,33],[36,39],[42,45]])D、array([[8,10],[12,14],[16,18],[20,22]])答案:D

解析:構(gòu)造數(shù)組為2個(gè)4*2數(shù)組,axis=0即求和是在第0維前后兩頁(yè)array上對(duì)應(yīng)元素求和,得到4*2的數(shù)組3、有數(shù)組n=np.arange(24).reshape(2,-1,2,2),n.shape的返回結(jié)果是什么?A、(2,3,2,2)B、(2,2,2,2)C、(2,4,2,2)D、(2,6,2,2)答案:A4、numpy中創(chuàng)建全為0的矩陣使用函數(shù)為?A、zeros.B、ones.C、empty.D、arange.答案:A5、numpy中向量轉(zhuǎn)成矩陣使用函數(shù)為?A、randomB、revalC、reshapeD、arange答案:C

解析:考察numpy函數(shù)功能6、在使用numpy時(shí)需要如何導(dǎo)入?A、不用導(dǎo)入,直接使用B、importnumpyasnpC、importsysD、importpandas答案:B

解析:考察numpy模塊名稱與導(dǎo)入方法7、importnumpyasnp;t1=np.arange(16).reshape((4,4)),如何將t1數(shù)組進(jìn)行行列轉(zhuǎn)置?A、t1.TB、t1.transpose()C、t1.swapaxes(0,1)D、以上都對(duì)答案:D

解析:numpy多維數(shù)組的多種轉(zhuǎn)置方法8、對(duì)numpy生成的數(shù)組中,隨機(jī)選擇部分樣本,使用哪個(gè)函數(shù)?A、sample()B、select()C、choice()D、shuffle()答案:C

解析:choice(a[,size,replace,p]):從一維數(shù)組a中以概率p抽取元素,形成size形狀新數(shù)組,replace表示是否可以重用元素,默認(rèn)為False9、下列numpy中哪個(gè)函數(shù)可以生成符合標(biāo)準(zhǔn)正態(tài)分布的數(shù)組?A、random.rand()B、random.randint()C、random.random()D、random.randn()答案:D

解析:考察numpy隨機(jī)數(shù)生成函數(shù)及區(qū)別10、importnumpyasnp;arr=np.arange(10).reshape((5,2))[:,0:-1:2],arr的值是?A、[[1],[2],[3],[4],[5]]B、[[5],[6],[7],[8],[9]]C、[[0],[2],[4],[6],[8]]D、所列結(jié)果都不對(duì)答案:C

解析:考察numpy數(shù)組重塑與切片操作11、使用numpy創(chuàng)建一個(gè)大小為10的零向量數(shù)組,函數(shù)形式為_(kāi)___。答案:zeros(10);np.zeros(10)12、使用numpy創(chuàng)建一個(gè)數(shù)組,使它的值為10到49,函數(shù)形式為_(kāi)___。答案:arange(10,50);arange(10,50,1);np.arange(10,50);

np.arange(10,50,1)13、5x3矩陣乘3x2矩陣,對(duì)應(yīng)結(jié)果的形狀是____。答案:(5,2);5x214、arr=np.arange(10),寫出獲取數(shù)組arr第3至第8個(gè)元素(注意3和8不是索引下標(biāo))的切片語(yǔ)句____。答案:arr[2:8]15、numpy中根據(jù)起止數(shù)據(jù)等間距地生成數(shù)組的函數(shù)是____。答案:linspace();np.linspace()16、numpy中能夠一次完成多個(gè)數(shù)組拼接的函數(shù)是____。答案:concatenate();np.concatenate()17、numpy生成的數(shù)組中,其元素?cái)?shù)據(jù)類型____(必須相同/可以不同)。答案:必須相同18、TT=np.arange(4)-2,變量TT的值為_(kāi)___。答案:[-2-101];array([-2,-1,0,1]);[-2,-1,0,1];[-2,-1,0,1][-2-101];array([-2,-1,

0,

1]);[-2,-1,

0,

1];[-2,-1,0,1]19、TT=np.arange(4).mean(),變量TT的值為_(kāi)___。答案:1.520、numpy中讀取CSV文件的函數(shù)是____。答案:loadtxt();np.loadtxt()21、使用np.random.random創(chuàng)建一個(gè)10*10對(duì)象,并打印出其最大、最新元素和均值。

{答案:importnumpyasnp

a=np.random.random((10,10))

print(a.max(),a.min(),a.mean())

}22、使用numpy生成3行4列的數(shù)值為0至11之間整數(shù)的2維數(shù)組,然后使矩陣每行的數(shù)據(jù)減去該行的均值,并保持原來(lái)形狀,輸出結(jié)果。試寫出完整Python代碼。

{答案:importnumpyasnp

X=np.arange(12).reshape((3,4))

print("X=",X)

Y=X-X.mean(axis=1,keepdims=True)

print("Y=",Y)

}

解析:numpy.mean(a,axis,dtype,out,keepdims),axis=1:壓縮列,對(duì)各行求均值;keepdims=True表示維度縮減的軸在運(yùn)算之后仍被保留23、創(chuàng)建一個(gè)長(zhǎng)度為10的一維全為0的ndarray對(duì)象,第五個(gè)元素為1,并打印,寫出完整Python代碼.

{答案:importnumpyasnp

a=np.zeros((10,))

a[4]=1

print(a)

}24、給定數(shù)組[1,2,3,4,5],如何得到在這個(gè)數(shù)組的每個(gè)元素之間插入3個(gè)0后的新數(shù)組?試使用numpy模塊寫出完整Python代碼.

{答案:importnumpyasnp

nd1=np.arange(1,6)

nd2=np.zeros(shape=17,dtype=int)

nd2[::4]=nd1

}25、創(chuàng)建一個(gè)5*3隨機(jī)矩陣和一個(gè)3*2的元素值為0~100之間隨機(jī)整數(shù)的矩陣,求矩陣積,打印結(jié)果。試用numpy模塊實(shí)現(xiàn)并寫出完整Python代碼.

{答案:importnumpyasnp

n1=np.random.randint(0,100,size=(5,3))

n2=np.random.randint(0,100,size=(3,2))

result=np.dot(n1,n2)

print("結(jié)果為",result)

}26、通過(guò)Numpy創(chuàng)建的數(shù)組與列表相比,有何異同?數(shù)據(jù)類型限制、存儲(chǔ)效率、運(yùn)算效率、矩陣運(yùn)算、算術(shù)運(yùn)算區(qū)別如乘法?答案:Numpy創(chuàng)建的數(shù)組,其元素?cái)?shù)據(jù)類型都是相同的,而列表則可以不同,這導(dǎo)致列表的存儲(chǔ)效率和運(yùn)算效率都較低。Numpy數(shù)組支持矩陣運(yùn)算,而列表不支持;在算術(shù)運(yùn)算上也有區(qū)別,對(duì)于乘法運(yùn)算,列表是對(duì)元素進(jìn)行復(fù)制,而Numpy數(shù)組則是針對(duì)其上的每個(gè)元素進(jìn)行乘法算術(shù)運(yùn)算27、Numpy創(chuàng)建數(shù)組的函數(shù)arange()、linspace()、logspace()各有什么作用?答案:arange函數(shù)類似于python的range函數(shù),通過(guò)指定開(kāi)始值、終值和步長(zhǎng)來(lái)創(chuàng)建一維數(shù)組,注意數(shù)組不包括終值linspace函數(shù)通過(guò)指定開(kāi)始值、終值和元素個(gè)數(shù)來(lái)創(chuàng)建一維數(shù)組,可以通過(guò)endpoint關(guān)鍵字指定是否包括終值,缺省設(shè)置是包括終值logspace函數(shù)和linspace類似,不過(guò)它創(chuàng)建等比數(shù)列,起始位和終止位代表的是10的冪(默認(rèn)基數(shù)為10),如果想要改變基數(shù),則需要修改其默認(rèn)基數(shù),輸入有第四個(gè)參數(shù)base,改變其值即可。28、Numpy存取元素的方法都有哪些?存取后的變量與原始數(shù)組是否共享數(shù)據(jù)空間,分不同情況么?答案:Numpy存取元素的方法有多種,如:1)用整數(shù)作為下標(biāo)可以獲取數(shù)組中的某個(gè)元素;2)用范圍作為下標(biāo)獲取數(shù)組的一個(gè)切片,符號(hào)使用“:”,形式為[起點(diǎn):終點(diǎn):步長(zhǎng)],下標(biāo)可以使用負(fù)數(shù),表示從數(shù)組后往前數(shù),缺省范圍為左閉右開(kāi)。通過(guò)下標(biāo)范圍獲取的新的數(shù)組是原始數(shù)組的一個(gè)視圖,即與原始數(shù)組共享同一塊數(shù)據(jù)空間;3)使用整數(shù)序列。當(dāng)使用整數(shù)序列對(duì)數(shù)組元素進(jìn)行存取時(shí),將使用整數(shù)序列中的每個(gè)元素作為下標(biāo),整數(shù)序列可以是列表或者數(shù)組。使用整數(shù)序列作為下標(biāo)獲得的數(shù)組不和原始數(shù)組共享數(shù)據(jù)空間;4)使用布爾數(shù)組。當(dāng)使用布爾數(shù)組b作為下標(biāo)存取數(shù)組x中的元素時(shí),將收集數(shù)組x中所有在數(shù)組b中對(duì)應(yīng)下標(biāo)為True的元素。使用布爾數(shù)組作為下標(biāo)獲得的數(shù)組不和原始數(shù)組共享數(shù)據(jù)空間,注意這種方式只對(duì)應(yīng)于布爾數(shù)組,不能使用布爾列表29、Numpy的any()和all()方法有何作用和區(qū)別?答案:數(shù)組的any()或all()方法。只要數(shù)組中有一個(gè)值為True,則any()返回True;而只有數(shù)組的全部元素都為True,all()才返回True30、Numpy的兩個(gè)數(shù)組的shape不同的話,如何進(jìn)行算術(shù)運(yùn)算?答案:使用ufunc函數(shù)對(duì)兩個(gè)數(shù)組進(jìn)行計(jì)算時(shí),ufunc函數(shù)會(huì)對(duì)這兩個(gè)數(shù)組的對(duì)應(yīng)元素進(jìn)行計(jì)算,因此它要求這兩個(gè)數(shù)組有相同的大小(shape相同)。如果兩個(gè)數(shù)組的shape不同的話,會(huì)進(jìn)行如下的廣播(broadcasting)處理:1.讓所有輸入數(shù)組都向其中shape最長(zhǎng)的數(shù)組看齊,shape中不足的部分都通過(guò)在前面加1補(bǔ)齊。2.輸出數(shù)組的shape是輸入數(shù)組shape的各個(gè)軸上的最大值。3.如果輸入數(shù)組的某個(gè)軸和輸出數(shù)組的對(duì)應(yīng)軸的長(zhǎng)度相同或者其長(zhǎng)度為1時(shí),這個(gè)數(shù)組能夠用來(lái)計(jì)算,否則出錯(cuò)。4.當(dāng)輸入數(shù)組的某個(gè)軸的長(zhǎng)度為1時(shí),沿著此軸運(yùn)算時(shí)都用此軸上的第一組值。31、Numpy數(shù)組的拼接方法都有哪些?簡(jiǎn)單介紹答案:Python中numpy數(shù)組的合并有很多方法,如:1)np.append()。用于合并兩個(gè)數(shù)組。該函數(shù)返回一個(gè)新數(shù)組,原始數(shù)組保持不變.函數(shù)語(yǔ)法為:numpy.append(arr,values,axis=None).axis:該軸指定沿其附加值的軸。如果未提供軸,則將兩個(gè)陣列展平;values:值是類似數(shù)組的對(duì)象,并附加到“arr”元素的末尾2)np.concatenate()。參數(shù)為要連接的數(shù)組對(duì)象和指定連接的軸axis。axis=1進(jìn)行水平組合,axis=0進(jìn)行垂直組合3)np.stack()。把數(shù)組給堆疊起來(lái),函數(shù)原型為:stack(arrays,axis=0),arrays可以傳數(shù)組和列表。axis=1進(jìn)行水平組合,即水平(按列順序)將數(shù)組進(jìn)行堆疊;axis=0進(jìn)行垂直組合4)np.hstack()。參數(shù)為要連接的數(shù)組對(duì)象,進(jìn)行水平組合5)np.vstack()。參數(shù)為要連接的數(shù)組對(duì)象,進(jìn)行垂直組合6)np.dstack()。深度組合:沿著縱軸方向組合其中最泛用的是第一個(gè)和第二個(gè)。第一個(gè)可讀性好,比較靈活,但是占內(nèi)存大。第二個(gè)則沒(méi)有內(nèi)存占用大的問(wèn)題32、Pandas中DataFrame對(duì)象調(diào)用描述性統(tǒng)計(jì)方法describe,對(duì)數(shù)值型的列數(shù)據(jù)會(huì)輸出哪些統(tǒng)計(jì)結(jié)果,而對(duì)類別或文本型的列數(shù)據(jù)又會(huì)輸出哪些統(tǒng)計(jì)結(jié)果答案:數(shù)值型數(shù)據(jù)列的描述性統(tǒng)計(jì),會(huì)輸出針對(duì)數(shù)據(jù)的統(tǒng)計(jì)信息,如均值、標(biāo)準(zhǔn)差、中值、最小值、最大值及四分位統(tǒng)計(jì)值等;而類別或文本型列數(shù)據(jù)的描述性統(tǒng)計(jì),其結(jié)果包括count(計(jì)數(shù))、unique(唯一值個(gè)數(shù))、top(出現(xiàn)頻率最高的值)、freq(頻率最高值的頻度)等。33、簡(jiǎn)述pandas數(shù)據(jù)對(duì)象Series和DataFrame的算數(shù)運(yùn)算的對(duì)齊機(jī)制答案:pandas可以對(duì)不同索引的對(duì)象進(jìn)行算術(shù)運(yùn)算,如果存在不同的索引對(duì),結(jié)果的索引就是該索引對(duì)的并集。sereis相加會(huì)自動(dòng)進(jìn)行數(shù)據(jù)對(duì)齊操作,在不重疊的索引處會(huì)使用NA(NaN)值進(jìn)行填充,series進(jìn)行算術(shù)運(yùn)算的時(shí)候,不需要保證series的大小一致。dataFrame相加時(shí),對(duì)齊操作需要行和列的索引都重疊的時(shí)候才會(huì)相加,否則會(huì)使用NA值進(jìn)行填充。使用add方法對(duì)兩個(gè)series進(jìn)行相加的時(shí)候,設(shè)置fill_value的值是對(duì)于不存在索引的series用指定值進(jìn)行填充后再進(jìn)行相加。除了加法add,還有sub減法,div除法,mul乘法,使用方式與add相同。DataFrame與series一樣。34、簡(jiǎn)述Pandas中的兩類數(shù)據(jù)結(jié)構(gòu)Series和DataFrame的特點(diǎn)與作用?答案:Series是一維標(biāo)記數(shù)組,可以存儲(chǔ)任意數(shù)據(jù)類型,如整型、字符串、浮點(diǎn)型和Python對(duì)象等,軸標(biāo)一般指索引。DataFrame是二維標(biāo)記數(shù)據(jù)結(jié)構(gòu),列可以是不同的數(shù)據(jù)類型。它是最常用的pandas對(duì)象,像Series一樣可以接收多種輸入:lists、dicts、series和DataFrame等。初始化對(duì)象時(shí),除了數(shù)據(jù)還可以傳index和columns這兩個(gè)參數(shù)。Series兼具Numpy數(shù)組的特點(diǎn),運(yùn)算效率高,支持對(duì)元素的成批量運(yùn)算,但相比Numpy數(shù)組,還支持自動(dòng)對(duì)齊的計(jì)算,并提供了多種函數(shù)支持?jǐn)?shù)據(jù)的讀入、處理、分析等功能;特別是DataFrame,支持多種數(shù)據(jù)源的讀入,特別是對(duì)關(guān)系數(shù)據(jù)庫(kù)的訪問(wèn)和數(shù)據(jù)處理,非常高效。35、簡(jiǎn)述Pandas中DataFrame與Numpy中二維數(shù)組的檢索方法的異同答案:對(duì)于DataFrame對(duì)象,其只有直接的df[][]索引和ndarray不一樣,此時(shí)DataFrame先索引的是列,而不是行,也沒(méi)有df[i,j]的索引方法,但是對(duì)于切片索引以及df.iloc的索引方法,和ndarray完全一樣;此外,DataFrame還有df.loc的標(biāo)簽索引方法。首先對(duì)于ndarray,如二維的ndarray對(duì)象arr,則arr[i]和arr[i][j](等價(jià)于arr(i,j))都可以表示索引,其中arr[i]表示行索引,arr[i][j]表示有順序的先進(jìn)行第一個(gè)維度的索引(即行),再進(jìn)行第二個(gè)維度的索引(即對(duì)應(yīng)的行中的元素)。對(duì)于DataFrame,如一個(gè)DataFrame對(duì)象df.雖然同ndarray類似,都有類似的索引方式,但是直接索引的內(nèi)容卻不一樣,比如df['a']得到第一列,這里不同于arr[i],對(duì)于DataFrame對(duì)象,直接的df[i]索引,得到的是第i+1列,而不是第i+1行。當(dāng)進(jìn)行切片索引的時(shí)候,比如重新定義df,切片索引又同ndarray一樣,df[:2]得到前兩行,而不是前兩列;df[:][:1]得到第一列。故在切片索引的時(shí)候,又和ndarray一樣了。此外,DataFrame對(duì)象還有索引方法df.iloc[]和df.loc[],前者是對(duì)index和columns為整數(shù)時(shí)的所以,后者是對(duì)index和columns為其他標(biāo)簽時(shí)的索引;對(duì)于df.iloc[],其索引方式和ndarray完全一樣,既可以以df.iloc[i][j]的方式索引,也可以以df.iloc[i,j]的方式索引,當(dāng)然也可以直接的df.iloc[i]的方式索引。因此,對(duì)于DtaFrame對(duì)象,其只有直接的df[][]索引和ndarray不一樣,此時(shí)DataFrame先索引的是列,而不是行,也沒(méi)有df[i,j]的索引方法,但是對(duì)于切片索引以及df.iloc的索引方法,和ndarray完全一樣;此外,DataFrame還有df.loc的標(biāo)簽索引方法。36、執(zhí)行importpandasaspd;obj=pd.Series(range(4),index=['a','b','c','d']);

obj[obj<1];輸出結(jié)果為A、a0B、b1C、b0D、c2答案:A37、一個(gè)含有具體數(shù)據(jù)和空值的DataFrame數(shù)據(jù)對(duì)象df,執(zhí)行df1=df.dropna(inplace=True)后:A、df1和df一樣,都是刪除了空值的結(jié)果B、df1為None,df為刪除了空值的結(jié)果C、df1為刪除了空值的結(jié)果,df不變D、df1為df操作前的值,df為刪除了空值的結(jié)果答案:B38、obj=pd.Series(['c','a','d','a','a','b','b','c','c']),運(yùn)行

list(obj.unique())返回結(jié)果為答案:['c','a','d','b']39、importpandasaspd;data=pd.DataFrame({'k1':['one','two']*3+['two'],'k2':[1,1,2,3,3,4,4]});檢索data中數(shù)值'two'的方法為:A、data.k1[1]B、data.loc[1,'k1']C、data.iloc[1,0]D、以上方法都正確答案:D40、importpandasaspd;data=pd.DataFrame({'k1':['one','two']*3+['two'],'k2':[1,1,2,3,3,4,4]});執(zhí)行data.k2.sum()返回結(jié)果為:答案:1841、由于數(shù)據(jù)類型和維度不同,Pandas的DataFrame對(duì)象和Series之間不能進(jìn)行算數(shù)運(yùn)算答案:錯(cuò)誤

42、對(duì)于一個(gè)含有空值的DataFrame對(duì)象df,執(zhí)行df.fillna(0,inplace=True)后,df中的空值填充為0,并且返回修改后的結(jié)果答案:錯(cuò)誤43、不設(shè)置index和columns參數(shù),基于一個(gè)多維數(shù)組使用pandas的DataFrame函數(shù)創(chuàng)建對(duì)象df,使用loc和iloc方法對(duì)df中數(shù)據(jù)進(jìn)行檢索的形式是相同的答案:正確44、一個(gè)DataFrame對(duì)象,調(diào)用其drop_duplicates()函數(shù)后,僅保留重復(fù)行中的最后一行答案:錯(cuò)誤45、對(duì)一個(gè)DataFrame對(duì)象調(diào)用其mean()方法,缺省執(zhí)行的操作是axis等于答案:046、對(duì)于包含多個(gè)列的DataFrame,調(diào)用其無(wú)參數(shù)的describe()函數(shù)后,僅返回?cái)?shù)據(jù)類型為數(shù)值的列的描述性統(tǒng)計(jì)信息答案:正確47、對(duì)于兩個(gè)columns完全相同的DataFrame,將其中一個(gè)的所有記錄追加到另一個(gè)對(duì)象,可使用函數(shù)答案:append();append;concat();concat48、兩個(gè)有相同和不同columns的DataFrame,如果要合并兩者的所有屬性和對(duì)應(yīng)記錄行,可使用如下方法A、join()B、merge()C、join()和merge()方法都可以D、沒(méi)法合并答案:C

解析:49、importpandasaspd,numpyasnp;

pd.DataFrame(np.arange(10,25).reshape(3,5)).ndim返回值為:答案:250、Dataframe之間的連接方法有哪些?答案:Pandas提供了大量的方

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論