【數據分析day04】pandas數據處理二:異常值檢測和過濾&抽樣

1. 異常值檢測和過濾

使用describe()函數查看每一列的描述性統計量
在這裏插入圖片描述

ddd.describe()

在這裏插入圖片描述
上面的統計不包含字符串那兩列

思路:

1. 確定異常的檢測標準.

2. 寫成條件的形式.使用條件去過濾原始數據

練習:
新建一個形狀爲10000*3的標準正態分佈的DataFrame(np.random.randn),去除掉所有滿足以下情況的行:其中任一元素絕對值大於3倍標準差

# randn:從標準正態分佈中返回一個或多個樣本值,這裏是10000行
df = DataFrame(data=np.random.randn(10000, 3))
df.head()

在這裏插入圖片描述
使用std()函數可以求得DataFrame對象每一列的標準差

df.std()

在這裏插入圖片描述
寫成條件的形式,使用條件去過濾原始數據

# 條件:其中任一元素絕對值大於3倍標準差
cond = (df.abs() > 3 * df.std()).any(axis=1)
df.loc[~cond]

在這裏插入圖片描述
過濾掉74個

2. 抽樣

  • 分爲兩種:“有放回” 和 “無放回”
  • 使用.take()函數排序:take就是按照指定的順序把數據取出
  • 可以藉助np.random.permutation()函數隨機排序
    如:np.random.permutation([0, 1,2,3])
  • 一般數據量小使用有放回,數據量大使用無放回

無放回:permutation()

np.random.permutation 和take結合可以達到無放回抽樣的效果. 數據量大的時候可以用無放回.

ddd.take(np.random.permutation([0,1,2,3]))

在這裏插入圖片描述

有放回:

ddd.take(np.random.randint(0, 4, size=4))

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章