凌亂的數(shù)據集無處不在。如果要分析數(shù)據,不可避免地需要清理數(shù)據。在大數(shù)據分析R語言tidyverse數(shù)據清洗工具教程中,我們將研究如何使用R和一些漂亮的tidyverse工具來做到這一點。
該tidyverse工具提供了強大的方法來診斷和清理雜亂的數(shù)據集,R.雖然有更為我們可以用tidyverse做,在大數(shù)據分析R語言tidyverse數(shù)據清洗工具教程中,我們將重點學習如何:
1、將逗號分隔值(CSV)和Microsoft Excel平面文件導入R
2、合并數(shù)據框
3、清理列名
4、更多消息!
tidyverse是為處理數(shù)據而設計的R程序包的集合。tidyverse軟件包具有共同的設計理念,語法和數(shù)據結構。Tidyverse包“一起玩”。使用tidyverse,您可以花費更少的時間來清理數(shù)據,從而可以將更多的精力放在分析,可視化和建模數(shù)據上。
一、干凈數(shù)據和混亂數(shù)據的特征
什么是干凈數(shù)據?干凈的數(shù)據是準確,完整的,并且格式易于分析。干凈數(shù)據的特征包括以下數(shù)據:
1、沒有重復的行/值
2、無錯誤(例如,沒有拼寫錯誤)
3、相關(例如,無特殊字符)
4、適當?shù)臄?shù)據類型進行分析
5、沒有異常值(或僅包含已識別/理解的異常值)
6、遵循“整潔的數(shù)據”結構
數(shù)據混亂的常見癥狀包括包含以下內容的數(shù)據:
1、特殊字符(例如,數(shù)字中的逗號)
2、存儲為文本/字符數(shù)據類型的數(shù)值
3、行重復
4、拼寫錯誤
5、不正確的地方
6、空格
7、缺失數(shù)據
8、零而不是空值
二、動機
在大數(shù)據分析R語言tidyverse數(shù)據清洗工具教程文章中,我們將使用五個可在紐約市財政部滾動銷售數(shù)據網站上公開獲得的房地產銷售數(shù)據集。我們鼓勵您下載數(shù)據集并繼續(xù)學習!每個文件都包含紐約市五個行政區(qū)之一的一年的房地產銷售數(shù)據。我們將使用以下Microsoft Excel文件:
1、Rollingsales_bronx.xls
2、Rollingsales_brooklyn.xls
3、Rollingsales_manhattan.xls
4、Rollingsales_queens.xls
5、Rollingsales_statenisland.xls
當我們處理大數(shù)據分析R語言tidyverse數(shù)據清洗工具教程文章時,請想象您正在幫助一個朋友在紐約市開展他們的房屋檢查業(yè)務。您可以通過分析數(shù)據來幫助他們,以更好地了解房地產市場。但是您意識到在分析R中的數(shù)據之前,您需要首先進行診斷和清理。在診斷數(shù)據之前,您需要將其加載到R中!
三、使用readxl將數(shù)據加載到R中
使用tidyverse工具的好處通常在數(shù)據加載過程中顯而易見。在許多情況下,readxl當Microsoft Excel數(shù)據加載到R中時,tidyverse軟件包會為您清除一些數(shù)據。如果您正在使用CSV數(shù)據,則tidyverse readr軟件包功能read_csv()是要使用的功能(稍后將介紹)。
讓我們來看一個例子。這是布魯克林區(qū)的Excel文件的外觀:
現(xiàn)在,讓我們從Excel文件將Brooklyn數(shù)據集加載到R中。我們將使用該readxl包。我們指定函數(shù)自變量skip = 4是因為我們要用作標題的行(即列名)實際上是第5行。我們可以完全忽略前四行,并將數(shù)據從第5行開始加載到R中。這是代碼:
請注意,我們將此數(shù)據集保存為變量名稱,brooklyn以備將來使用。
四、使用tidyr :: glimpse()查看數(shù)據
tidyverse提供了一種用戶友好的方式glimpse(),可使用tibble包裝中的功能查看此數(shù)據。要使用此程序包,我們將需要加載它以便在當前會話中使用。但是,我們不僅可以單獨加載此程序包,還可以一次加載許多tidyverse程序包。如果沒有tidyverse軟件包集合,請在R或R Studio會話中使用以下命令將其安裝在計算機上:
安裝軟件包后,將其加載到內存中:
現(xiàn)在已將tidyverse其加載到內存中,對布魯克林數(shù)據集進行“瞥見”:
該glimpse()功能提供了一種用戶友好的方式,可以查看數(shù)據框中所有列或變量的列名和數(shù)據類型。使用此功能,我們還可以查看數(shù)據框中的前幾個觀察值。該數(shù)據框包含20,185個觀測值或房地產銷售記錄。并且有21個變量或列。
五、數(shù)據類型
查看每一列的數(shù)據類型,我們通常會發(fā)現(xiàn)數(shù)據以一種隨時可以使用的格式存儲!例如:
1、NEIGHBORHOOD 是“字符”類型,也稱為字符串。
2、GROSS SQUARE FEET (即屬性的大小)的類型為“ double”,是R中“數(shù)字”類的一部分。
3、SALE PRICE 也是數(shù)字。
4、SALE DATE 以代表日歷日期和時間的格式存儲。
那么為什么這很重要呢?因為GROSS SQUARE FEET和SALE PRICE是數(shù)字,所以我們可以立即對數(shù)據執(zhí)行算術運算。例如,我們可以計算所有物業(yè)的平均售價:
六、準備繪圖!
SALE DATE以表示日歷日期和時間的格式存儲該數(shù)據很有用,因為這使我們能夠使用一行代碼來按日期繪制房地產銷售的直方圖:
請注意,2020年4月房地產銷售急劇下降。這可能與COVID-19大流行有關嗎?如您所見,僅需幾行代碼,我們就可以開始探索數(shù)據并提出一些有趣的問題!
請注意,用于制作直方圖的qplot()函數(shù)來自ggplot2軟件包,這是一個核心tidyverse軟件包。
七、與read.csv()比較
該readxl()功能對我們有多大幫助?讓我們將其與R中內置的read.csv()功能進行比較。為此,我們下載了原始Excel文件,在Mac上的Numbers程序中將其打開,然后將文件轉換為CSV。當然,這種工作流程并不理想,但對于分析人員來說,更喜歡以CSV格式讀取表格數(shù)據并不少見。
這是我們使用CSV格式加載相同數(shù)據時看到的內容read.csv():
這些數(shù)據比較混亂!方法如下:
1、諸如的字符(字符串)數(shù)據ADDRESS已存儲為“ factor”類。將因素視為類別或存儲桶。
2、GROSS.SQUARE.FEET并且SALE.PRICE也存儲為因素。我們不能在一個因子上執(zhí)行算術運算,例如計算均值!
3、SALE.DATE不會以代表日歷日期和時間的格式存儲。因此,我們無法建立上面看到的直方圖。(我們可以制作一個直方圖,但這很麻煩,而且沒有意義)。
4、在GROSS.SQUARE.FEET與SALE.PRICE列包含特殊字符,逗號(,)。
但是,如果我們與加載相同的數(shù)據集read_csv()功能,從readr包裝,這是tidyverse部分,我們看到類似于我們用原來的做法結果readxl():
總而言之,使用readxl()或將數(shù)據加載到R中的關鍵區(qū)別在于read_csv(),沒有任何變量被強制轉換為factor數(shù)據類型。代替。許多變量被加載為字符或字符串數(shù)??據類型。
另外,請注意,該Sale Price列中缺少特殊字符,并且該列已作為a double或數(shù)字數(shù)據類型加載。這意味著我們可以立即執(zhí)行與銷售價格有關的計算,而無需采取額外步驟即可將列轉換為數(shù)字!
八、合并數(shù)據集
如果我們要對紐約市所有五個行政區(qū)進行數(shù)據分析,則將數(shù)據集組合起來將很有幫助。另外,如果數(shù)據需要任何其他清理,那么最好只在一個地方而不是五個地方清理數(shù)據!我們已經驗證了五個Excel文件中的每個列名都相同。因此,我們可以將數(shù)據框與包中的bind_rows()功能dplyr(另一個tidyverse包!)結合使用:
該NYC_property_sales數(shù)據框還包含21個變量,例如brooklyn數(shù)據框。這很好,因為它可以確認所有五個數(shù)據集都具有完全相同的列名,因此我們無需進行任何更正即可合并它們!該bind_rows()函數(shù)本質上是將五個數(shù)據幀彼此堆疊在一起以形成一個。
如果我們將這些數(shù)據框組合在一起并得到比該brooklyn數(shù)據框更多的列,則可能表明存在問題,例如其中一個數(shù)據集中的列名錯誤。但這并沒有發(fā)生,因此我們可以繼續(xù)清理列名。
九、用magrittr Magic清理列名!
現(xiàn)在是時候在AAA教育上獲取我們最喜歡的數(shù)據清理技巧之一了!
列名包含空格,在tidyverse中可能很難使用。此外,列名稱包含大寫字母。我們不想在分析過程中擔心空格或記住大寫變量名!讓我們使用magrittr包中的便捷方法快速清除列名。首先將程序包加載到內存中。如果需要,請安裝該軟件包。tidyverse中使用了“ magrittr”包,但我們需要顯式加載它才能訪問其內置函數(shù)之一。
我們將使用magrittr軟件包中的“分配管道”功能來有效地更新所有變量名稱。管道是功能強大的工具,可讓R用戶一次將多個操作鏈接在一起。管道還使R代碼更具可讀性,更易于理解。使用tidyverse工具時,管道被廣泛使用。
讓我們將賦值管道運算符與str_replace_all()tidyverse stringr包中的函數(shù)結合起來,用下劃線替換所有空格。NYC_property_sales數(shù)據框的代碼如下所示:
那么這是怎么回事?想到的%<>%意思是“然后更新”。讓我們將其放在上下文中。上面的代碼行實質上意味著:
從NYC_property_sales數(shù)據框中獲取列名,然后更新所有列名以用下劃線替換所有空格,然后將所有列名更新為小寫。
這句話很長!但這證明了管道運算符將多個命令鏈接在一起的價值。讓我們看一下更新的列名稱:
看起來更好!
十、管道操作
通常,在使用tidyverse工具時,我們將使用中的單管道(%>%)magrittr。管道是將多個命令鏈接在一起的一種方式?;叵胍幌挛覀內绾螌⑵?<>%視為“然后更新”?好吧,單個管道可以簡單地認為是“然后”。這是一個使用我們到目前為止學習的命令的示例:
這大致可轉換為:
讓我們抓住NYC_property_sales數(shù)據框,然后瞥一眼數(shù)據。
回顧
哇,看看我們在這大數(shù)據分析R語言tidyverse數(shù)據清洗工具教程文章中介紹的所有內容:
1、read_excel()使用readxl包中的功能將Microsoft Excel平面文件加載到R中
2、使用軟件包中的read_csv()功能導入CSV文件readr
3、使用包中的glimpse()功能查看數(shù)據幀特征tibble
4、使用包中的qplot()函數(shù)生成直方圖ggplot2
5、將數(shù)據框與包中的bind_rows()功能組合在一起dplyr
6、使用magrittr包和stringr包中的函數(shù)清理列名
7、將命令與單管道(%>%)鏈接在一起magrittr
如您所見,tidyverse軟件包是用于加載,清理和檢查數(shù)據的功能非常強大的工具,因此您可以立即開始分析數(shù)據!請記住,您可以使用一次加載所有這些軟件包library(tidyverse)。
其他資源
如果您是R和tidyverse的新手,我們建議從R課程中的AAA教育數(shù)據分析入門開始。這是AAA教育 Data Analyst中R路徑中的第一門課程。
哈德利·威克漢姆(Hadley Wickham)和加勒特·格羅勒蒙德(Garrett Grolemund)所著的《R for Data Science》一書涵蓋了我們在這里介紹的很多內容(還有更多!)。我們?yōu)樗袑W習R的人推薦這本書。
獎勵:備忘單
RStudio已發(fā)布了大量使用R和tidyverse工具的備忘單。與該職位相關的備忘單包括:
1、數(shù)據導入備忘單
2、數(shù)據轉換指南
3、使用字符串備忘單
4、數(shù)據可視化備忘單
可以從RStudio中選擇來選擇備忘單Help > Cheatsheets。
填寫下面表單即可預約申請免費試聽!怕錢不夠?可先就業(yè)掙錢后再付學費! 怕學不會?助教全程陪讀,隨時解惑!擔心就業(yè)?一地學習,可推薦就業(yè)!
?2007-2022/ www.5wd995.cn 北京漫動者數(shù)字科技有限公司 備案號: 京ICP備12034770號 監(jiān)督電話:010-53672995 郵箱:bjaaa@aaaedu.cc