數(shù)據(jù)異常值的過(guò)濾
在數(shù)據(jù)分析中,經(jīng)常需要檢測(cè)數(shù)據(jù)結(jié)構(gòu)中的異常值。我們還是舉個(gè)例子,先來(lái)創(chuàng)建一個(gè)包含三列的DataFrame對(duì)象,每一列都包含1000個(gè)隨機(jī)數(shù)。
可以用describe( )函數(shù)查看每一列的描述性統(tǒng)計(jì)量。
例如,你可以會(huì)將比標(biāo)準(zhǔn)差大3倍的元素視作異常值。用std( )函數(shù)就可以求得DataFrame對(duì)象每一列的標(biāo)準(zhǔn)差。
j接下來(lái),根據(jù)每一列的標(biāo)準(zhǔn)差,對(duì)DataFrame對(duì)象的所有元素進(jìn)行過(guò)濾。借助any( )函數(shù),就可以對(duì)每一列應(yīng)用篩選條件。
數(shù)據(jù)排序
用numpy.random.permutation( )函數(shù),調(diào)整Series對(duì)象或DataFrame對(duì)象各行的順序(隨機(jī)排序)很簡(jiǎn)單。
舉個(gè)例子,創(chuàng)建一個(gè)元素為整數(shù)且按照升序排列的DataFrame對(duì)象。
用permutation( )函數(shù)創(chuàng)建一個(gè)包含0~4(順序隨機(jī))這五個(gè)整數(shù)的數(shù)組。我們將按照這個(gè)數(shù)組元素的順序?yàn)镈ataFrame對(duì)象的行排序。
對(duì)DataFrame對(duì)象的所有行應(yīng)用take( )函數(shù),把新的次序傳給它。
如上所見(jiàn),DataFrame對(duì)象各行的位置已發(fā)生改變。新索引的順序跟new_order數(shù)組的元素順序保持一致。
你甚至還可以只對(duì)DataFrame對(duì)象的一部分進(jìn)行排序操作。它將生成一個(gè)數(shù)組,只包含特定索引范圍的數(shù)據(jù)。例如我們這里的2~4。
隨機(jī)取樣
上面剛講了如何通過(guò)指定排列次序,從DataFrame對(duì)象中抽取一部分?jǐn)?shù)據(jù)。若DataFrame規(guī)模很大,有時(shí)可能需要從中隨機(jī)取樣,最快的方法莫過(guò)于使用np.random.randint( )函數(shù)。
從隨機(jī)取樣這個(gè)例子可知,你可以多次獲取相同的樣本。
字符串處理
Python語(yǔ)言由于處理字符串和文本很方便,因而很受歡迎。大多數(shù)字符串操作用Python的內(nèi)置函數(shù)就能輕松實(shí)現(xiàn)。字符串匹配及其他更為復(fù)雜的字符串處理,就有必要用正則表達(dá)式了。
內(nèi)置的字符串處理方法
你常常需要將復(fù)合字符串劃分為幾個(gè)部分,分別賦給不同的變量。split( )函數(shù)以參考點(diǎn)為分隔符,比如逗號(hào),將文本分為幾部分。
如上所見(jiàn),切分后得到的第一個(gè)元素以空白字符結(jié)尾。這個(gè)問(wèn)題很常見(jiàn)。為了解決這個(gè)問(wèn)題,使用split( )函數(shù)切分后,還要再用strip( )函數(shù)刪除空白的字符,包括換行符。
這樣我們就得到了一個(gè)字符串?dāng)?shù)組。如果元素?cái)?shù)量較少且固定不變,可使用下面這種非常有意思的賦值方式:
上面講的是文本的切分方法,但我們通常還需要其逆操作,也就是把多個(gè)字符串拼接在一起形成一段長(zhǎng)文本。
最直觀和簡(jiǎn)單的方法就是使用運(yùn)算符‘+’把這幾個(gè)文本片段拼接在一起。
如果只有寥寥幾個(gè)字符串,那么這種拼接方式就顯得很簡(jiǎn)單。但是如果要拼接很多字符串,更為實(shí)用的方式就是使用join( )函數(shù)。
聯(lián)系客服