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