自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

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

[[422454]]

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

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

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

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

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

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

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

01缺失值

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

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

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

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

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

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

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

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

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

  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ù)也支持向后填充,不過,要使用特定的值進行填充。

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

02 噪聲或者離群點

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

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

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

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

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

03數(shù)據不一致

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

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

 

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

 

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

2016-11-01 15:42:17

醫(yī)療健康大數(shù)據數(shù)據標準 數(shù)據挖掘

2009-06-18 10:24:00

CDMA網絡優(yōu)化

2018-11-14 14:18:26

APP網絡分析

2024-11-11 14:23:11

2013-11-19 15:48:34

電商安全網購安全

2018-12-11 13:46:54

2022-02-12 11:14:25

物聯(lián)網安全物聯(lián)網IOT

2023-10-18 14:14:59

數(shù)字化轉型

2012-11-28 13:37:27

.NET.NET社區(qū)

2015-10-19 14:35:46

安全污染數(shù)據

2010-11-09 17:10:38

2020-10-19 09:34:04

C語言內存錯誤編程語言

2015-03-17 21:01:12

2011-11-21 15:04:30

2010-11-11 13:44:46

2009-03-03 13:12:14

2021-03-29 11:51:07

緩存儲存數(shù)據

2009-05-14 09:50:49

移動IPv6數(shù)據傳輸

2012-05-21 13:35:35

應用流量

2010-03-04 16:49:44

點贊
收藏

51CTO技術棧公眾號