使用Numpy對特征中的異常值進(jìn)行替換及條件替換方式
原始數(shù)據(jù)為Excel文件,由傳感器獲得,通過Pyhton xlrd模塊讀入,讀入后為數(shù)組形式,由于其存在部分異常值和缺失值,所以便利用Numpy對其中的異常值進(jìn)行替換或條件替換。
1. 將'nan'替換為給定值
import numpy as np
data = np.array([['nan', 1, 2, 3, 4], # 數(shù)據(jù)類型為字符串型
[10, 15, 20, 25, 'nan'],
['nan', 5, 8, 10, 20]])
print(data)
# [['nan' '1' '2' '3' '4']
# ['10' '15' '20' '25' 'nan']
# ['nan' '5' '8' '10' '20']]
data[data == 'nan'] = 100 # 將numpy中為'nan'的項替換為 100
print(data)
# [['100' '1' '2' '3' '4']
# ['10' '15' '20' '25' '100']
# ['100' '5' '8' '10' '20']]
data = data.astype(float) # 將數(shù)據(jù)由字符型轉(zhuǎn)換為浮點型
print(data)
# [[100. 1. 2. 3. 4.]
# [ 10. 15. 20. 25. 100.]
# [100. 5. 8. 10. 20.]]
2. 按列進(jìn)行條件替換
當(dāng)利用'3σ準(zhǔn)則'或者箱型圖進(jìn)行異常值判斷時,通常需要對 > upper 或 < lower的值進(jìn)行處理,這時就需要按列進(jìn)行條件替換了。
print(data) # [[100. 1. 2. 3. 4.] # [ 10. 15. 20. 25. 100.] # [100. 5. 8. 10. 20.]] data[:, 1][data[:, 1] < 5] = 5 # 對第2列小于 5 的替換為5 print(data) # [[100. 5. 2. 3. 4.] # [ 10. 15. 20. 25. 100.] # [100. 5. 8. 10. 20.]] data[:, 2][data[:, 2] > 15] = 10 # 對第3列大于 15 的替換為10 print(data) # [[100. 5. 2. 3. 4.] # [ 10. 15. 10. 25. 100.] # [100. 5. 8. 10. 20.]]
補充知識:Python之dataframe修改異常值—按行判斷值是否大于平均值的指定倍數(shù),如果是則用均值替換
如下所示:

import pandas as pd
data = {'hah':[1,2,9],
'數(shù)量':[3,2,5],
'價格':[10,9,8]}
df = pd.DataFrame(data)
df
import numpy as np
def panduan(x):
x_mean = np.mean(x)
print(x_mean)
for i in x.index:
if x[i] > x_mean*2:
x[i] = x_mean
# print(i)
return x
df = df.apply(lambda x:panduan(x),axis=1)
以上這篇使用Numpy對特征中的異常值進(jìn)行替換及條件替換方式就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python實現(xiàn)對字典分別按鍵(key)和值(value)進(jìn)行排序的方法分析
這篇文章主要介紹了Python實現(xiàn)對字典分別按鍵(key)和值(value)進(jìn)行排序的方法,結(jié)合實例形式分析了Python基于sorted函數(shù)及operator庫進(jìn)行字典排序的相關(guān)操作技巧,需要的朋友可以參考下2018-12-12
深入理解Python虛擬機(jī)中列表(list)的實現(xiàn)原理及源碼剖析
在本篇文章當(dāng)中主要給大家介紹?cpython?虛擬機(jī)當(dāng)中針對列表的實現(xiàn),在?Python?中,List?是一種非常常用的數(shù)據(jù)類型,可以存儲任何類型的數(shù)據(jù),并且支持各種操作,如添加、刪除、查找、切片等,在本篇文章當(dāng)中將深入去分析這一點是如何實現(xiàn)的2023-03-03
解決python執(zhí)行不輸出系統(tǒng)命令彈框的問題
今天小編就為大家分享一篇解決python執(zhí)行不輸出系統(tǒng)命令彈框的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-06-06
關(guān)于pygame.surface.blit()方法4個參數(shù)的使用
這篇文章主要介紹了關(guān)于pygame.surface.blit()方法4個參數(shù)的使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-03-03
Anaconda中Python虛擬環(huán)境的創(chuàng)建使用與刪除方法詳解
這篇文章主要為大家介紹了在Anaconda環(huán)境下,創(chuàng)建、使用與刪除Python虛擬環(huán)境的方法,具有一定的借鑒價值,需要的小伙伴可以跟隨小編一起了解一下2023-08-08
Pandas中DataFrame的分組/分割/合并的實現(xiàn)
這篇文章主要介紹了Pandas中DataFrame的分組/分割/合并的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
python導(dǎo)出requirements.txt的幾種方法總結(jié)
這篇文章主要介紹了python導(dǎo)出requirements.txt的幾種方法總結(jié),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-02-02

