偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

數(shù)據(jù)清理中存在的問題及對策

開發(fā) 前端
數(shù)據(jù)清理是數(shù)據(jù)預(yù)處理非常關(guān)鍵的一步。為了清理數(shù)據(jù),我們必須要知道可能存在的問題,才能針對相應(yīng)的問題設(shè)計相應(yīng)的方法。

[[422454]]

本文轉(zhuǎn)載自微信公眾號「數(shù)倉寶貝庫」,作者趙志強(qiáng) 等。轉(zhuǎn)載本文請聯(lián)系數(shù)倉寶貝庫公眾號。

現(xiàn)實世界中的數(shù)據(jù)量越來越大,也越來越容易受到噪聲、缺失值和不一致數(shù)據(jù)等的影響。數(shù)據(jù)庫太大,如若有不同的來源,那么臟數(shù)據(jù)問題一定會存在,這是不可避免的。為了使數(shù)據(jù)中的各種問題對我們的建模影響最小化,需要對數(shù)據(jù)進(jìn)行預(yù)處理。

在實際操作中,數(shù)據(jù)預(yù)處理通常分為兩大步,一是數(shù)據(jù)清洗,二是數(shù)據(jù)的基本分析。這兩步并不一定是按先后順序進(jìn)行的,通常也會相互影響。比如,有的錯誤數(shù)據(jù)(不可能出現(xiàn)的極值),必須通過基本的統(tǒng)計分析才能發(fā)現(xiàn)。

有一種說法,數(shù)據(jù)的預(yù)處理會占據(jù)絕大部分的工作量,有的甚至?xí)_(dá)到所有工作量的80%,建模和算法真正的工作量其實只有20%。這個結(jié)論在互聯(lián)網(wǎng)或者傳統(tǒng)IT領(lǐng)域,特別是面對大量的非結(jié)構(gòu)化數(shù)據(jù)時,確實是事實。

所以第一步,也是非常關(guān)鍵的一步,就是數(shù)據(jù)清理。為了清理數(shù)據(jù),我們必須要知道可能存在的問題,才能針對相應(yīng)的問題設(shè)計相應(yīng)的方法。

原始數(shù)據(jù)可能存在如下三種問題。

  • 數(shù)據(jù)缺失:數(shù)據(jù)缺失的問題在高頻數(shù)據(jù)里面特別常見。而且由于很多投資者是自己實時下載的數(shù)據(jù),因此即使之后發(fā)現(xiàn)也很難彌補(bǔ)。
  • 噪聲或者離群點(diǎn):由于系統(tǒng)或者人為的失誤,導(dǎo)致數(shù)據(jù)出現(xiàn)明顯的錯誤,比如某支股票的價格本應(yīng)在12元左右,結(jié)果突然出現(xiàn)了100元的價格數(shù)據(jù)。
  • 數(shù)據(jù)不一致:很多投資者,為了確保數(shù)據(jù)正確性,會使用多個數(shù)據(jù)源進(jìn)行交叉驗證,這時往往會出現(xiàn)數(shù)據(jù)不一致的問題。即使是同一個數(shù)據(jù)源,有時候也會出現(xiàn)數(shù)據(jù)不一致的問題。比如期貨行情數(shù)據(jù),Wind、文華、MC的數(shù)據(jù)都有可能出現(xiàn)不一致的問題,數(shù)據(jù)頻率越高,不一致的可能性就越大。

01缺失值

針對缺失值,實際操作中,需要兩套程序:一套程序是檢查缺失值,一套程序是填補(bǔ)缺失值。一般流程是,先檢查缺失值,研究缺失值,選擇填補(bǔ)方法,進(jìn)行填補(bǔ),然后再次檢查。這樣迭代循環(huán),直到將數(shù)據(jù)缺失控制在可接受范圍內(nèi)。

缺失值,也有多種類型,一種是“正常缺失”,比如股票在某一天停牌,那么這一天的交易數(shù)據(jù)就是沒有的。一種是“非正常缺失”,比如明明有交易,但就是沒有交易數(shù)據(jù)。

舉個例子,在下載5分鐘數(shù)據(jù)的時候,發(fā)現(xiàn)20160104的數(shù)據(jù)都有缺失,但Wind上的數(shù)據(jù)又顯示當(dāng)天的交易情況為“交易”。實際情況是當(dāng)天發(fā)生了“熔斷”,因為是新的機(jī)制,所以Wind還沒來得及準(zhǔn)備一個字段用于表示當(dāng)天的交易狀態(tài)。這種情況就屬于數(shù)據(jù)的“正常缺失”,只是交易狀態(tài)與數(shù)據(jù)不一致而已。Wind的交易狀態(tài)字段如下圖所示。

在檢查缺失值時,這兩種缺失需要分辨清楚,因為不同的缺失值,處理方法也不一樣。檢查好缺失值之后,就需要進(jìn)行處理了。先處理“非正常缺失”,一般流程具體如下。

1)檢查提取數(shù)據(jù)是否出錯。有時候,數(shù)據(jù)源本身是完整的,然而自己在提取數(shù)據(jù)的時候出現(xiàn)了問題。比如,筆者在使用市場上某家的金融高頻數(shù)據(jù)的時候,下載5分鐘數(shù)據(jù)計算高頻波動率,發(fā)現(xiàn)存在很多缺失的數(shù)據(jù)。經(jīng)該公司后臺查詢后發(fā)現(xiàn),他們的數(shù)據(jù)庫其實是有這個數(shù)據(jù)的,這說明是在下載數(shù)據(jù)的過程中出現(xiàn)了問題。

2)從其他數(shù)據(jù)源提取。有的數(shù)據(jù)源本身就缺失了數(shù)據(jù),對于這種情況可以再尋找另外一個數(shù)據(jù)源進(jìn)行補(bǔ)充。

算法填充。有的時候,我們沒有辦法使用多數(shù)據(jù)源進(jìn)行補(bǔ)充,而且有的數(shù)據(jù)本身就有空缺,無法補(bǔ)充。這個時候,可以退而求其次,使用算法填充。

常用算法有向前填充和向后填充兩種。所謂向前填充是指使用之前最近的一個數(shù)據(jù)對空值進(jìn)行填充。向后填充是指使用之后最近的一個數(shù)據(jù)對空值進(jìn)行填充。

Pandas提供了一個函數(shù)用于數(shù)據(jù)填充。示例代碼如下:

  1. df = pd.DataFrame([[np.nan, 2, np.nan, 0], 
  2.  
  3. ...                    [3, 4, np.nan, 1], 
  4.  
  5. ...                    [np.nan, np.nan, np.nan, 5], 
  6.  
  7. ...                    [np.nan, 3, np.nan, 4]], 
  8.  
  9. ...                    columns=list('ABCD')) 
  10.  
  11. df 
  12.  
  13.      A    B   C  D 
  14.  
  15. 0  NaN  2.0 NaN  0 
  16.  
  17. 1  3.0  4.0 NaN  1 
  18.  
  19. 2  NaN  NaN NaN  5 

向前填充的示例代碼如下:

  1. df.fillna(method='ffill'
  2.  
  3.     A   B   C   D 
  4.  
  5. 0   NaN 2.0 NaN 0 
  6.  
  7. 1   3.0 4.0 NaN 1 
  8.  
  9. 2   3.0 4.0 NaN 5 
  10.  
  11. 3   3.0 3.0 NaN 4 

除了向前填充,該函數(shù)也支持向后填充,不過,要使用特定的值進(jìn)行填充。

有的數(shù)據(jù)發(fā)生了缺失,無法使用簡單的向前填充或向后填充來處理。比如,使用Wind下載a股復(fù)權(quán)數(shù)據(jù),會發(fā)現(xiàn)交易狀態(tài)trade_status在1999年之前都是空值,雖然實際上是有交易的,但如果直接按照trade_status=‘交易’這個條件來篩選,將會把1999年之前的所有數(shù)據(jù)都去掉。這個時候就需要根據(jù)邏輯設(shè)計一個算法來進(jìn)行填充,比如將成交量volume>0的都填充為“交易”。

02 噪聲或者離群點(diǎn)

噪聲或離群點(diǎn)的問題一般有兩種情況,一種是數(shù)據(jù)錯誤導(dǎo)致的,比如本來應(yīng)該是10.0的數(shù)據(jù),錯誤顯示為10000;另一種則是其本身是真實數(shù)據(jù),但就是離群點(diǎn),比如金融危機(jī)中的收益率或者波動率,可能就非常極端,成為離群點(diǎn)。

一般的處理步驟具體如下。

1)通過一定的算法識別出離群點(diǎn)。一般是使用該數(shù)據(jù)標(biāo)準(zhǔn)差的多少倍來判斷。比如正太分布中,正負(fù)標(biāo)準(zhǔn)差3倍以上的概率是99.7%,可以將其認(rèn)定為可疑離群點(diǎn)。

2)人工判斷離群點(diǎn)是屬于錯誤數(shù)據(jù)導(dǎo)致的,還是正常的離群點(diǎn)。

3)對離群點(diǎn)進(jìn)行處理。一般來說,錯誤的離群點(diǎn)需要更正或者刪除。正常的離群點(diǎn)則需要另外建模進(jìn)行分析。

03數(shù)據(jù)不一致

為了確保數(shù)據(jù)的準(zhǔn)確性,有時候需要使用多種數(shù)據(jù)源進(jìn)行交叉驗證。比如,在研究港股的時候,對比了Wind和Bloomberg的后復(fù)權(quán)數(shù)據(jù)之后,發(fā)現(xiàn)兩者存在很大的差別,這就是數(shù)據(jù)不一致的問題,但我們并不能確定哪一個才是正確的,于是又加入了同花順和CSMAR的數(shù)據(jù)進(jìn)行對比,發(fā)現(xiàn)后者與Wind的數(shù)據(jù)是一致的。所以可以確認(rèn)是Bloomberg的問題,因而采用Wind的數(shù)據(jù)。

當(dāng)然,在實際工作中,數(shù)據(jù)清理的問題要遠(yuǎn)遠(yuǎn)多于這里介紹的幾種,需要系統(tǒng)性地、仔細(xì)地去處理。

 

本書摘編自《Python量化投資:技術(shù)、模型與策略》,經(jīng)出版方授權(quán)發(fā)布。

 

責(zé)任編輯:武曉燕 來源: 數(shù)倉寶貝庫
相關(guān)推薦

2016-11-01 15:42:17

醫(yī)療健康大數(shù)據(jù)數(shù)據(jù)標(biāo)準(zhǔn) 數(shù)據(jù)挖掘

2009-06-18 10:24:00

CDMA網(wǎng)絡(luò)優(yōu)化

2018-11-14 14:18:26

APP網(wǎng)絡(luò)分析

2013-11-19 15:48:34

電商安全網(wǎng)購安全

2024-11-11 14:23:11

2023-10-18 14:14:59

數(shù)字化轉(zhuǎn)型

2018-12-11 13:46:54

2022-02-12 11:14:25

物聯(lián)網(wǎng)安全物聯(lián)網(wǎng)IOT

2012-11-28 13:37:27

.NET.NET社區(qū)

2020-10-19 09:34:04

C語言內(nèi)存錯誤編程語言

2015-10-19 14:35:46

安全污染數(shù)據(jù)

2010-11-09 17:10:38

2015-03-17 21:01:12

2010-11-11 13:44:46

2009-03-03 13:12:14

2011-11-21 15:04:30

2012-05-21 13:35:35

應(yīng)用流量

2021-03-29 11:51:07

緩存儲存數(shù)據(jù)

2017-12-04 10:56:47

MySQL問題分析解決對策

2009-05-14 09:50:49

移動IPv6數(shù)據(jù)傳輸
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號