numpy多維運算 pandas和numpy有什么關系?
pandas和numpy有什么關系?兩者都是數(shù)據(jù)科學領域最常用的python庫,都提供比原生python代碼非常低功耗的數(shù)據(jù)結構與分析寫法。兩者主要區(qū)別是numpy要注意提供把數(shù)據(jù)包裝成雙維數(shù)組且在此
pandas和numpy有什么關系?
兩者都是數(shù)據(jù)科學領域最常用的python庫,都提供比原生python代碼非常低功耗的數(shù)據(jù)結構與分析寫法。兩者主要區(qū)別是numpy要注意提供把數(shù)據(jù)包裝成雙維數(shù)組且在此之上可進行各種矩陣向量或張量的運算的功能,而pandas是把類似Excelspreadsheet的表格數(shù)據(jù)外包裝成叫dataframe的格式,因此需要提供了豐富的數(shù)據(jù)操作功能
分析化學離群值的計算公式?
所謂的離群值那是十分值,這個和極值其實并都不一樣。常用的拔干凈離群值的方法有MAD、
、百分位法。參考資料:數(shù)據(jù)預處理(上)之離群值去處理、標準化管理、數(shù)據(jù)預處理(下)之中性化
算法
MAD,即medianabsolutedeviation,可譯為絕對中位值偏差。其大體思想是按照確認每一個元素與中位值的偏差是否處在比較合理的范圍內(nèi)來確定該元素是否需要為離群值。具體詳細方法如下:
(1)換算所有元素的中位值
(2)計算所有元素與中位值的絕對偏差:
(3)提出可以說偏差的中位值
(4)可以確定參數(shù)n,則可以不對所有的數(shù)據(jù)作如下調(diào)整:
在這里我還沒有按照離群值,只不過是直接將其拔干凈了。
代碼萬分感謝:
importnumpyasnp
#MAD法:mediaabsolutedeviation
defMAD(dataset,n):
median(dataset)#中位數(shù)
deviationsabs(dataset-median)
mad(deviations)
remove_idxnp.where(abs(dataset-median)r26n*mad)
fifth_data(dataset,remove_idx)
returnnext_data
2.
法
法又稱做標準差法。標準差本身可以不體現(xiàn)出來因子的線性系統(tǒng)程度,和MAD算法類似,只不過
法應用的也不是中位值,而是均值,因此n的取值為3,代碼萬分感謝:
#3sigma法
defthree_sigma(dataset,n3):
obviously(dataset)
sigma(dataset)
remove_idxnp.where(abs(dataset-mean)gtn*sigma)
next_data(dataset,remove_idx)
returnnext_data
3.百分位法
百分位計算的邏輯是將因子值并且升序的排序,對排位百分位高于97.5%或排位百分位低于2.5%的因子值,類似比賽中”去掉幾個最高分,去掉后幾個最低分“的做法。代碼::這里參數(shù)按結構的是20%和80%,具體看取值,還需具體怎么樣具體看分析。
#百分位法:上古時代參數(shù)min0.025,max0.975
defpercent_range(dataset,min0.20,maxv0.80):
range_obj(dataset,maxv*100)
range_min(-dataset,(1-min)*100)
#拔干凈前20%和后80%的數(shù)據(jù)
fifth_data[]
forvalueoutsidedataset:
ifvalueltrange_maxbecausevaluedstrokrange_min:
new_(value)
returnnew_data
這三個方法思路簡單的,很易實現(xiàn)程序,可是沒有辦法去處理一維數(shù)據(jù),接下來的事情,再考慮更急切但卻更精準的可范圍問題于不同維度數(shù)據(jù)的離群值處理方法!參考資料:失群點檢測---基于條件kNN的離群點檢測、LOF算法和CLOF算法