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

數(shù)據(jù)科學(xué)家本地處理大中型數(shù)據(jù)的三種簡單方法

譯文
大數(shù)據(jù)
作為數(shù)據(jù)科學(xué)家,我們通常面臨龐大的數(shù)據(jù)集,少則幾千萬條記錄,多則幾億條記錄,可能有幾十列,甚至幾百列。這些數(shù)據(jù)通常以csv文件來接收,以多種方式來處理,最終目的是運(yùn)行用Python或R編寫的復(fù)雜的機(jī)器學(xué)習(xí)算法。

【51CTO.com快譯】作為數(shù)據(jù)科學(xué)家,我們通常面臨龐大的數(shù)據(jù)集,少則幾千萬條記錄,多則幾億條記錄,可能有幾十列,甚至幾百列。這些數(shù)據(jù)通常以csv文件來接收,以多種方式來處理,最終目的是運(yùn)行用Python或R編寫的復(fù)雜的機(jī)器學(xué)習(xí)算法。然而,這些數(shù)據(jù)不會(huì)裝入到RAM內(nèi)存中,因此需要設(shè)計(jì)替代工具。

所有這些數(shù)據(jù)可以分配到一個(gè)集群中,并在集群中加以處理,但是這需要上傳文件這個(gè)繁瑣的過程,花費(fèi)服務(wù)器時(shí)間方面的開銷,而且我們?cè)谔幚砻舾袛?shù)據(jù)時(shí)擔(dān)心安全問題,需要相當(dāng)復(fù)雜的編程方法,還要花時(shí)間來下載輸出結(jié)果。當(dāng)然,總是可以創(chuàng)建本地的Spark會(huì)話,但學(xué)習(xí)曲線相當(dāng)陡(意味著學(xué)起來困難),安裝對(duì)初學(xué)者來說是個(gè)難題(如果目標(biāo)是偶爾處理幾個(gè)大文件,更是困難重重)。

我們?cè)诒疚闹兄亟榻B處理這種數(shù)據(jù)集的幾種簡單技術(shù)(包括安裝和運(yùn)行)。

[[215741]]

***種選擇:遍歷文件

你可以使用Python或R來快速遍歷文件。在本文中,我們將遍歷一個(gè)非常大的文件。數(shù)據(jù)集如下:5379074個(gè)觀測值和8列,有整數(shù)、日期和字符串,光盤上的文件大小是212 MB。

本地處理大中型數(shù)據(jù)的若干簡單方法

圖1

我們將生成一個(gè)類,用于處理這個(gè)文件。在這個(gè)類中,我們將定義兩個(gè)簡單的操作,***個(gè)操作是計(jì)算***值,第二個(gè)操作將過濾與特定名稱對(duì)應(yīng)的記錄。在***三行中,我們?yōu)檫@個(gè)類創(chuàng)建實(shí)例,并使用其方法。

請(qǐng)注意:我們之所以沒使用pandas.read_csv,是因?yàn)檫@個(gè)數(shù)據(jù)集通常不會(huì)裝入到內(nèi)存中(這取決于你的計(jì)算機(jī))。另外請(qǐng)注意,我們排除了***條記錄,因?yàn)樗形募^。

本地處理大中型數(shù)據(jù)的若干簡單方法

圖2

問題是,在大多數(shù)實(shí)際情況下,就在我們偏離簡單的子集設(shè)置(sub-setting)操作的同一時(shí)刻,代碼的復(fù)雜性就會(huì)以驚人的方式增加。比如說,即使為一個(gè)使用文件的簡單的排序過程編寫代碼也非常復(fù)雜,更不用說處理缺失值、多變量類型和日期格式等問題了。更糟糕的是,大多數(shù)數(shù)據(jù)處理操作需要很好地實(shí)現(xiàn)排序過程:合并、置換和匯總不僅本身很困難,還總是要求經(jīng)過排序的數(shù)據(jù)在合理的時(shí)間內(nèi)運(yùn)行。

第二種選擇:SAS

幾十年來,SAS一直是***的統(tǒng)計(jì)分析軟件。除了其出色的統(tǒng)計(jì)方法實(shí)現(xiàn)外,SAS還讓我們可以輕松處理數(shù)億個(gè)觀測值。它是通過使用硬盤來存儲(chǔ)數(shù)據(jù)做到這點(diǎn)的,而不是像大多數(shù)軟件那樣使用RAM內(nèi)存來存儲(chǔ)數(shù)據(jù)。除此之外,這些文件可能有數(shù)千列。

SAS編程語言非常簡單而靈活。比如說,只要短短幾行代碼就可以實(shí)現(xiàn)讀取文件并進(jìn)行排序:

  1. Data customer_data;  
  2. infile “./sales.csv” lrecl=32767 missover;  
  3. input User_id: 8. Salesman: $10. Date: mmddyy8. Customername: $10. City:$3. Country: $6.  
  4. Discount: $9. Promo: 8.;  
  5. run;  
  6. proc sort data = customer_data;  
  7. by User_id;  
  8. run; 

日志文件是SAS一個(gè)經(jīng)常被忽視的方面,但也是其***大的功能之一。日志文件是一種功能極其強(qiáng)大的工具,可用于識(shí)別奇怪的觀測值、缺失值和異常結(jié)果。比如說,將兩個(gè)文件與數(shù)百萬個(gè)觀測值合并時(shí),你只要查看多少觀測值在兩個(gè)文件中被讀取、多少觀測值作為輸出被寫入,立即就能發(fā)現(xiàn)問題。

你通常不會(huì)發(fā)現(xiàn)任何種類的限制或局限。不過遇到極其龐大的文件,使用分布式環(huán)境會(huì)來得更方便,使用在集群上運(yùn)行的Spark(但這已在本文的討論范圍之外)。遺憾的是,SAS許可證通常相當(dāng)昂貴,而且只能在計(jì)算機(jī)上運(yùn)行。

第三種選擇:nitroproc

nitroproc是一款免費(fèi)的跨平臺(tái)軟件(目前適用于Windows/MacOS/安卓/iOS),是為處理數(shù)據(jù)(專門面向數(shù)據(jù)科學(xué)家)而設(shè)計(jì)的。它可以借助Python或R,通過批處理模式來調(diào)用。與SAS類似,它旨在使用硬盤來存儲(chǔ)數(shù)據(jù),所以對(duì)數(shù)據(jù)大小幾乎沒有限制。其腳本可以部署到任何設(shè)備上,不用改變其語法(有待處理的正確的輸入文件路徑顯然除外)。

我們?cè)诒疚闹袑⒀菔救绾问褂肳indows版本和安卓版本(iOS版本也可以從App Store下載)。它可處理不同的變量類型、文件格式和缺失值。當(dāng)前版本讓你可以進(jìn)行排序、合并、過濾、子集、計(jì)算虛擬變量、聚合及其他許多數(shù)據(jù)處理操作,這些過去是數(shù)據(jù)科學(xué)家所做的任務(wù)。

與SAS相似,nitroproc可以生成功能非常強(qiáng)大的日志,用于識(shí)別奇怪的數(shù)據(jù)和錯(cuò)誤的合并等問題。另外,它還生成名為logtracer的另一個(gè)日志文件,用于邏輯分析腳本中的不同指令有怎樣的關(guān)系。

按一個(gè)鍵排序540萬個(gè)觀測值

在這個(gè)例子中,我們將在PC和(舊)安卓手機(jī)中排序一個(gè)很大的文件,只是為了顯示nitroproc的功能有多強(qiáng)大。我們將使用圖1中所用的同一個(gè)數(shù)據(jù)集,即含有540萬條記錄的數(shù)據(jù)集。請(qǐng)記住,該數(shù)據(jù)集有5379074個(gè)觀測值和8列,包含整數(shù)、日期和字符串,光盤上的文件大小是212MB。這里我們將按它的***列(User_id)來排序。

你可以從https://www.nitroproc.com/download.html下載csv文件,復(fù)制我們?cè)诖颂庯@示的相同結(jié)果。我在這里建議進(jìn)行測試時(shí),手機(jī)連接到PC/Mac,沒有其他進(jìn)程在后臺(tái)運(yùn)行。

語法很簡單,我們只要寫:

  1. sort(file = sales.csv,by = [User_id],coltypes = [int,string,dd / mm / yyyy,string,string,string,int,int],order = [asc],outname = result.csv, out_first_row = true) 

所有參數(shù)基本上不需要加以說明。order指定我們是否需要升序還是降序,out_first_row用于指定我們想不想要輸出文件頭。你可能注意到,我們沒有指定任何文件頭,因?yàn)閏sv已經(jīng)包括文件頭。如果不包含,我們需要輸入headers=[colum_name1,…,column_namek]。針對(duì)PC,我們需要指定適當(dāng)?shù)奈募窂?,但如果是安卓和iOS版本,只需要文件名,因?yàn)槲募窂綍?huì)自動(dòng)恢復(fù)(如果是安卓,使用/Downloads文件夾;如果是iPhone/iPad,使用App文件夾,它可以通過iTunes來訪問)。

排序在nitroproc中來得特別重要,因?yàn)樗糜诤喜⑽募?、匯總文件及其他操作。

PC版本

在一臺(tái)相當(dāng)標(biāo)準(zhǔn)的(2012年)桌面英特爾i5-4430 @3.00 GHz和標(biāo)準(zhǔn)的希捷500GB ST500DM002硬盤上,排序用時(shí)1分25秒(請(qǐng)查看圖3:nitroproc生成的日志文件,PC版本)完成。在***的英特爾設(shè)備上,比如i7-4970k,并使用固態(tài)硬盤,腳本的運(yùn)行速度至少快3倍(通過超頻,可以達(dá)到更快的速度)。

本地處理大中型數(shù)據(jù)的若干簡單方法

圖3

安卓版本

在裝有安卓7.0 Nougat的Nexus上運(yùn)行相同的腳本要慢得多(圖4是nitroproc生成的日志文件,安卓版本,但仍可以順暢無阻地運(yùn)行)。這款手機(jī)是2015年發(fā)布的,采用1.8Ghz處理器(記住這不是一款高端手機(jī))。如圖1所示,用時(shí)15分鐘。在***的(2017年)高端安卓手機(jī)上,運(yùn)行該腳本預(yù)計(jì)只要一半的時(shí)間(7分鐘)。由于基本上沒有使用RAM,nitroproc在RAM不足的系統(tǒng)中可以非常順暢地運(yùn)行。

本地處理大中型數(shù)據(jù)的若干簡單方法

圖4

iOS版本

***,看一下在iPhone 8 Plus(A11仿生芯片)上運(yùn)行的iOS版本的結(jié)果。這些結(jié)果讓我覺得驚訝。蘋果聲稱,iPhone 8和X是有史以來最快的手機(jī),但這可能是低調(diào)的說法。你可以看到,它在2分42秒內(nèi)排序完文件,比我們的桌面英特爾CPU只慢了近一倍(記住PC的耗電量超過250瓦,而iPhone 8s在6.96瓦左右),但比普通的安卓手機(jī)幾乎快5.5倍。對(duì)于iPhone 8 Plus(和使用相同芯片的iPhone X)來說一種更準(zhǔn)確的說法是,它堪稱工程奇跡,提供了與耗電量高出35倍的桌面游戲CPU相當(dāng)?shù)男阅?。要知道:nitroproc涉及非常密集的輸入/輸出操作,本文測試中涉及數(shù)億次的寫入和讀取,因?yàn)橛写罅康闹虚g操作。A11及其操作系統(tǒng)能夠以如此快的速度從硬盤讀取如此多的數(shù)據(jù),這幾乎是超現(xiàn)實(shí)的。

本地處理大中型數(shù)據(jù)的若干簡單方法

圖5

原文標(biāo)題:Simple Ways Of Working With Medium To Big Data Locally,作者:Francisco Juretig

【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】

責(zé)任編輯:未麗燕 來源: 51CTO.com
相關(guān)推薦

2017-08-04 15:53:10

大數(shù)據(jù)真?zhèn)螖?shù)據(jù)科學(xué)家

2016-05-11 10:36:16

數(shù)據(jù)科學(xué)家數(shù)據(jù)科學(xué)大數(shù)據(jù)

2017-01-23 16:00:25

數(shù)據(jù)科學(xué)家大數(shù)據(jù)數(shù)學(xué)家

2010-01-31 10:47:11

企業(yè)數(shù)據(jù)安全數(shù)據(jù)安全數(shù)據(jù)泄漏

2010-09-27 11:16:35

數(shù)據(jù)防泄露

2019-06-05 15:17:45

2019-07-30 12:05:20

數(shù)據(jù)科學(xué)采樣算法

2016-09-22 14:28:33

數(shù)據(jù)科學(xué)家算法

2020-09-04 16:17:15

數(shù)據(jù)科學(xué)離群點(diǎn)檢測

2010-09-17 19:52:57

數(shù)據(jù)泄露

2009-09-08 10:37:57

C#遍歷CheckBo

2012-12-26 10:51:20

數(shù)據(jù)科學(xué)家

2018-12-24 08:37:44

數(shù)據(jù)科學(xué)家數(shù)據(jù)模型

2018-02-28 15:03:03

數(shù)據(jù)科學(xué)家數(shù)據(jù)分析職業(yè)

2021-08-31 10:51:34

UPS電源環(huán)境

2018-03-27 11:02:55

2021-09-14 09:13:38

UPS電源安裝供電系統(tǒng)

2016-04-11 14:15:06

數(shù)據(jù)科學(xué)數(shù)據(jù)挖掘工具

2020-03-20 14:40:48

數(shù)據(jù)科學(xué)Python學(xué)習(xí)

2015-08-25 13:20:29

數(shù)據(jù)科學(xué)
點(diǎn)贊
收藏

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