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))