小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

【R】有助于提高數(shù)據(jù)處理效率的7個包

 無名小卒917 2017-01-13

來自數(shù)據(jù)工匠 http:///article/detail/67.html

引言

數(shù)據(jù)處理是建立預(yù)測模型時(shí)不可避免的一步。一個穩(wěn)健的預(yù)測模型不是僅僅依靠機(jī)器學(xué)習(xí)算法就可以建立的,相反,它還需要依靠一定的方法,這些方法幫助人們理解商業(yè)問題,了解潛在數(shù)據(jù)集,進(jìn)行必要的數(shù)據(jù)處理工作并提取出有用的商業(yè)信息。

在這些建模階段里,大多數(shù)時(shí)間通常都被花在了解潛在數(shù)據(jù)集和進(jìn)行必要數(shù)據(jù)處理上。這也是這篇文章的焦點(diǎn)——談一談R中可提高數(shù)據(jù)處理效率的包。

 

什么是數(shù)據(jù)處理?

如果你不清楚這個術(shù)語的含義,讓我來給你解釋一下它。數(shù)據(jù)處理是和數(shù)據(jù)探索一起使用的一個沒有嚴(yán)格定義的術(shù)語。它包括用可獲得的變量集“操縱”數(shù)據(jù),以提高數(shù)據(jù)的準(zhǔn)確性和精度。

事實(shí)上,數(shù)據(jù)收集的過程會有很多的漏洞。有各種各樣不可控的因素會導(dǎo)致數(shù)據(jù)不精確,比如被調(diào)查者的精神狀況,個人偏見,數(shù)據(jù)的讀數(shù)差異或錯誤等。為了降低不精確程度,我們運(yùn)用數(shù)據(jù)處理來(最大)可能性的增加數(shù)據(jù)精度。

這一階段有時(shí)也被稱為數(shù)據(jù)整理或數(shù)據(jù)清洗。

 

處理數(shù)據(jù)的不同方式

數(shù)據(jù)處理方式?jīng)]有對錯之分,只要你能理解數(shù)據(jù)并采取正確的方法處理數(shù)據(jù)。但通常人們在嘗試進(jìn)行數(shù)據(jù)處理時(shí)一般會用到以下幾個寬泛的方法:

  • 通常來說,R的初學(xué)者覺得用R內(nèi)置的基礎(chǔ)函數(shù)處理數(shù)據(jù)就很舒服。這個作為第一步很好,但是通常重復(fù)度高且耗時(shí),因此是一個相對低效的解決問題方法。
  • 使用專門的數(shù)據(jù)處理包。如今CRAN有超過7000個可供使用的包,這些包不過是一些事先寫好的常用代碼集合。他們可以幫你更快地完成重復(fù)性工作,減少編程差錯并從專業(yè)人士寫的代碼中得到幫助(通過R的開源系統(tǒng)),使你的代碼運(yùn)行起來更加高效。這通常是數(shù)據(jù)處理中最常用的方法。
  • 使用機(jī)器學(xué)習(xí)算法進(jìn)行數(shù)據(jù)處理工作。你可以使用基于樹的改進(jìn)算法來處理缺失值和異常值。盡管這個方法無疑更省時(shí),但通常它們會讓你覺得對數(shù)據(jù)的理解不夠,并想要找到更好的方法來認(rèn)識數(shù)據(jù)。

因此,通常情況下,事實(shí)上都是使用包來進(jìn)行數(shù)據(jù)處理。在這篇文章中,我將介紹幾個使得R的數(shù)據(jù)處理更方便的包。

這篇文章最適宜于R語言的初學(xué)者。你可以這樣安裝一個包:

C8JBzNFL

軟件包的清單

為了理解更清楚,我會通過一些常見的指令來示范如何使用它們。下面是這篇文章要討論的幾個R包:

  1. dplyr
  2. data.table
  3. ggplot2
  4. reshape2
  5. readr
  6. tidyr
  7. lubridate

注:我知道ggplot2是一個用來畫圖的包,但是,它通常會幫助人們進(jìn)行數(shù)據(jù)可視化并相應(yīng)地進(jìn)行處理數(shù)據(jù)工作。因此我把它加進(jìn)了這個單子里。對所有包,我只寫了有關(guān)數(shù)據(jù)處理的常用命令。

 

dplyr包

這個包是Hadley Wickham創(chuàng)建和維護(hù)的。它包括了(幾乎)全部可以用來加快數(shù)據(jù)處理進(jìn)程的內(nèi)容。它最有名的是數(shù)據(jù)探索和數(shù)據(jù)轉(zhuǎn)換功能。它的鏈?zhǔn)秸Z法讓它使用起來很方便。它包括5個主要的數(shù)據(jù)處理指令:

  1. 過濾——集于某一條件過濾數(shù)據(jù)
  2. 選擇——選出數(shù)據(jù)集中感興趣的列
  3. 排列——升序或降序排列數(shù)據(jù)集中的某一個值域
  4. 變換——從已有變量生成新的變量
  5. 概括(通過group_by)——提供常用的操作分析,如最小值、最大值、均值等

只需要關(guān)注這些指令便可以完成很好的數(shù)據(jù)探索工作。讓我們一起逐一了解一下這些指令。我用到了兩個R中內(nèi)置的數(shù)據(jù)集mtcars和iris.

Rn1yE4NL

vF4gVZ5l

cGs5RmxH

flGlEggi

1udGzSMM

gp7LFf4p

jau0EIiW

S00eh2mz

WSwZWvOt

 

ew06xlgv

kc9Str5l

 

data.table包

這個包讓你可以更快地完成數(shù)據(jù)集的數(shù)據(jù)處理工作。放棄選取行或列子集的傳統(tǒng)方法,用這個包進(jìn)行數(shù)據(jù)處理。用最少的代碼,你可以做最多的事。相比使用data.frame,data.table可以幫助你減少運(yùn)算時(shí)間。你一定會對這個包的簡潔性感到震驚。

一個數(shù)據(jù)表格包含三部分,即DT[i, j, by]。你可以理解為我們告訴R用i來選出行的子集,并計(jì)算通過by來分組的j。大多數(shù)時(shí)候,by是用于類別變量的。在下面的代碼中,我用了兩個數(shù)據(jù)集(airquality和iris)。

PaPQsENG

CCbYIEmH

ARj3CBYF

eeOb21bU

Km6h63kV

YpS6qnkv

uHuEU2Q9

 

ggplot2包

ggplot包展示了一個全新的色彩與圖案世界。如果你是一個富有創(chuàng)意的人,你會非常喜歡這個包。但是如果你是想了解如何開始使用這個包,請依據(jù)下面的代碼。你至少需要學(xué)會畫這三個圖的方法:散點(diǎn)圖,條形圖和直方圖。

這三個圖表涵蓋了除了地圖外幾乎所有的數(shù)據(jù)展示類別。ggplot有豐富的自定義特征使你的數(shù)據(jù)可視化變得更好。當(dāng)和其他諸如cowplot,gridExtra包一起使用時(shí),它會變得更強(qiáng)大。事實(shí)上,它有很多特色指令。因此,你必須專注于幾個指令并且做到精通。在下面的代碼中我也展示了在同一個窗口中比較不同圖表的方法。它需要gridExtra包來配合,所以你要先安裝這個包。我用了R內(nèi)置的數(shù)據(jù)集。

LIQrowuz

kbGvd4vS

a0U6ggYY-1

YxFLn4lo

snCRKEG1

rPpJ1asW

B7Re5zXV

reshape2包

正如這個包的名字所表示的含義,這個包對于重塑數(shù)據(jù)格式很有用。我們都知道數(shù)據(jù)會有很多不同的表現(xiàn)格式。因此,我們需要根據(jù)需要“馴服”它們以為己用。通常,在R中重塑數(shù)據(jù)格式非常無聊和麻煩。R基礎(chǔ)函數(shù)中有一個Aggregation函數(shù),用來縮減并重新排列數(shù)據(jù)為更短小的格式,但是會大大減少數(shù)據(jù)包含的信息量。Aggregation包括tapply,by和aggregate基礎(chǔ)函數(shù)。reshape包會克服這些問題。在這里我們試著把有一樣值的特征合并在一起。它有兩個函數(shù),即melt和cast。

melt: 這個函數(shù)把數(shù)據(jù)從寬格式轉(zhuǎn)化為長格式。這是一種把多個類別列“融合”為一行的結(jié)構(gòu)重組。我們來通過代碼理解它是怎么運(yùn)行的。

Aw304FsT

DZQm92qM

 

Cast: 這個函數(shù)把數(shù)據(jù)從長格式轉(zhuǎn)換為寬格式。它始于融合后的數(shù)據(jù),然后把數(shù)據(jù)重新構(gòu)造為長格式。它就是melt函數(shù)的反向操作。它包括兩個函數(shù),即,dcast和acast。dcast返回?cái)?shù)據(jù)框作為輸出結(jié)果。acast返回向量/矩陣/數(shù)組作為輸出結(jié)果。讓我們通過下面的代碼來看看怎么用它們。

3hzsnO2L

readr包

正如這個包的名字所暗示的,readr用來把不同格式的數(shù)據(jù)讀入R中,通過比傳統(tǒng)方法快十倍的速度。在此,字符型變量不會被轉(zhuǎn)化為因子型變量(所以不再有stringAsFactors = FALSE命令)。這個包可以代替?zhèn)鹘y(tǒng)的R基礎(chǔ)函數(shù)read.csv()和read.table()。它可以用來讀入以下格式的數(shù)據(jù):

  • 分隔符文件:read_delim(),read_csv(),read_tsv()和read_csv2()
  • 固定寬度文件:read_fwf()和read_table()
  • 網(wǎng)絡(luò)日志文件:read_log()

如果數(shù)據(jù)載入時(shí)間超過5秒,函數(shù)還會顯示進(jìn)度條。你可以通過命令它為FALSE來禁止進(jìn)度條出現(xiàn)。我們來一起看一下下面的代碼。

p8wTL2SZ

你也可以利用以下的代碼定義數(shù)據(jù)集中每列變量的格式:

zGYhekZL

然而,如果我們忽視不重要的變量,那么該函數(shù)會自動定義這些變量的格式。所以上述代碼也可以寫成以下形式:

ZkPXwz9C

備注:readr包中含有很多有用的函數(shù)。所以你可以考慮利用write_csv函數(shù)來導(dǎo)出數(shù)據(jù),這個函數(shù)的運(yùn)算效率高于write.csv函數(shù)。

 

tidyr包

這個包可以讓你的數(shù)據(jù)看上去“整潔”。它主要用四個函數(shù)來完成這個任務(wù)。毋庸贅言,當(dāng)你發(fā)現(xiàn)自己在數(shù)據(jù)探索階段卡殼的時(shí)候,你可以(和dplyr包一起)隨時(shí)使用這些函數(shù)。這兩個包形成了一個實(shí)力強(qiáng)大的組合。它們很好學(xué),代碼容易些,應(yīng)用便捷。這四個函數(shù)是:

  • gather()——它把多列放在一起,然后轉(zhuǎn)化為key:value對。這個函數(shù)會把寬格式的數(shù)據(jù)轉(zhuǎn)化為長格式。它是reshape包中melt函數(shù)的一個替代。
  • spread()——它的功能和gather相反,把key:value對轉(zhuǎn)化成不同的列。
  • separate()——它會把一列拆分為多列
  • unite()——它的功能和separate相反,把多列合并為一列

我們一起來通過下面的代碼更仔細(xì)地了解如何使用他們:

ix6EmtM5

32J7uaJN

函數(shù)separate最適用于有時(shí)間變量的數(shù)據(jù)集。由于列中包含了很多信息,因此把它們拆分開來并分別使用它們很有必要。使用以下的代碼,我把一個列拆分成了日期,月份和年。

bgJChq0k

A2oVKLeF

 

lubridate包

Lubridate包可以減少在R中操作時(shí)間變量的痛苦。此包的內(nèi)置函數(shù)提供了很好的解析日期與時(shí)間的便利方法。這個包常用于包含時(shí)間數(shù)據(jù)的數(shù)據(jù)集。在此我展示了Lubridate包中的三個函數(shù)。

這三個函數(shù)是update,duration和date extraction。作為一個初學(xué)者,了解這三個函數(shù)足以讓你成為處理時(shí)間變量的專家。盡管R有內(nèi)置函數(shù)來處理日期,這個包的處理方法會更快。讓我們一起來通過以下代碼了解這些函數(shù)是如何運(yùn)用的:

K5lMbxVy

1gTmykhE

 

注:這些包最佳的使用方法不是分開單獨(dú)使用,而是把它們用在一起。你可以很容易地同dplyr一起使用這個包,在dplyr中你可以比較方便地選擇一個數(shù)據(jù)變量并通過鏈?zhǔn)矫钐崛〕鲇杏玫臄?shù)據(jù)。

 

結(jié)語:

這些包不僅能幫助你提升數(shù)據(jù)處理水平,還能助你更深入地探索R?,F(xiàn)在我們已經(jīng)看到了,這些包讓在R中寫代碼變得更容易。你不再需要寫長串的代碼,相反,代碼變得更短,可以處理的任務(wù)變得更多。

每個包都有多線處理任務(wù)的功能。因此,我建議你們掌握那些常用的重要函數(shù)。同時(shí),當(dāng)你熟悉了如何使用它們時(shí),你就能進(jìn)行更深入地挖掘和探索。我開始也犯了這個錯誤,我試著研究ggplot2中所有的特征函數(shù),結(jié)果最后一頭霧水。我建議你們在閱讀文章的同時(shí)能試著練習(xí)寫這些代碼。這會有助于你更自信地使用這些包。

在這篇文章中,我介紹了可以讓數(shù)據(jù)探索變得更方便快捷的7個包的使用方法。R因其令人贊嘆的統(tǒng)計(jì)功能而聞名于世,同時(shí),時(shí)時(shí)更新的包也讓它成為數(shù)據(jù)科學(xué)家最愛使用的工具。

 

 

原文鏈接:

原文作者:Manish Saraswat

翻譯:Fibears

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多