現(xiàn)代藝術(shù)博物館是世界上最有影響力的博物館之一,他們已經(jīng)發(fā)布了有關(guān)其收藏中藝術(shù)品的數(shù)據(jù)集。但是,數(shù)據(jù)集存在一些數(shù)據(jù)質(zhì)量問(wèn)題,需要清理。
在之前我們發(fā)布的文章中,我們討論了如何使用Python和Pandas清理數(shù)據(jù)集。在大數(shù)據(jù)分析如何使用命令行和csvkit清潔CSV數(shù)據(jù)中,我們將學(xué)習(xí)如何使用該csvkit庫(kù)來(lái)獲取和探索表格數(shù)據(jù)。
為什么使用命令行?
好問(wèn)題!在云大數(shù)據(jù)分析環(huán)境中工作時(shí),有時(shí)您只能訪問(wèn)服務(wù)器的外殼。在這些情況下,精通命令行大數(shù)據(jù)分析才是真正的超級(jí)大國(guó)。隨著您變得更加熟練,使用命令行執(zhí)行某些大數(shù)據(jù)分析任務(wù)比編寫(xiě)Python腳本或Hadoop作業(yè)要快得多。
最后,命令行具有豐富的工具生態(tài)系統(tǒng),并且可以集成到文件系統(tǒng)中。這使得某些類型的任務(wù)(尤其是涉及多個(gè)文件的任務(wù))異常簡(jiǎn)單。期望大數(shù)據(jù)分析如何使用命令行和csvkit清潔CSV數(shù)據(jù)有一些在命令行上工作的經(jīng)驗(yàn)。如果您不熟悉命令行,建議您閱讀我們的交互式命令行課程
csvkit
csvkit是一個(gè)為處理CSV文件而優(yōu)化的庫(kù)。它是用Python編寫(xiě)的,但是主要界面是命令行。您可以csvkit使用安裝pip:
您將需要這個(gè)庫(kù)來(lái)跟隨大數(shù)據(jù)分析如何使用命令行和csvkit清潔CSV數(shù)據(jù)。
數(shù)據(jù)采集
MOMA藝術(shù)品數(shù)據(jù)集可在博物館的Github回購(gòu)中找到。讓我們使用從Githubcurl下載Artworks.csv。curl是大多數(shù)Shell環(huán)境中內(nèi)置的工具,使您可以在服務(wù)器之間傳輸數(shù)據(jù)。Github為每個(gè)文件提供直接URL,您可以通過(guò)單擊Raw按鈕找到它們。
最后,我們將使用>運(yùn)算符將輸出重定向curl到名為的文件artworks.csv。
數(shù)據(jù)探索
我們可以使用該head命令顯示n文件的第一行(默認(rèn)為10行)。要顯示前三行,可以使用以下任一命令:
與大多數(shù)數(shù)據(jù)集一樣,第一行看起來(lái)包含列標(biāo)題。除此之外,輸出雜亂無(wú)章,很難從默認(rèn)輸出中收集其他信息。我們需要一個(gè)知道如何以可讀方式顯示CSV文件的工具。
csvlook
csvlook是其中的工具csvkit,可讓您以表格形式顯示和預(yù)覽CSV文件。csvlook artworks.csv將顯示整個(gè)數(shù)據(jù)集,這很麻煩進(jìn)行探索。讓我們來(lái)代替管stdout的head -5 artworks.csv,以csvlook探索前5行:
這是代表管道的圖:
盡管現(xiàn)在輸出更容易閱讀,但仍然很難探索?,F(xiàn)在,讓我們學(xué)習(xí)如何使用csvcut僅選擇一些列并顯示它們。
csvcut
csvcut是其中的一種工具csvkit,稱為數(shù)據(jù)解剖刀,因?yàn)樗试S您切片和修改CSV中的列。首先使用-n標(biāo)記列出所有列:
然后,我們可以使用該-c標(biāo)志來(lái)指定所需的列。csvcut -c 1,2,3 artworks.csv | csvlook將返回前3列。您也可以自己使用列名稱:csvcut -c Artist,ArtistBio,Date。運(yùn)行這兩個(gè)命令將顯示整個(gè)數(shù)據(jù)集的3列,因此我們需要利用管道系統(tǒng)來(lái)查看僅幾行。
我們可以查閱csvkit 文檔以了解csvkit實(shí)用程序之間的管道:
所有csvkit實(shí)用程序都接受輸入文件作為“標(biāo)準(zhǔn)輸入”,以及文件名。這意味著我們可以使一個(gè)csvkit實(shí)用程序的輸出成為下一個(gè)的輸入。
這意味著我們可以管stdout的csvcut到stdin的csvlook!我們可以建立以下管道:
1)僅10使用提取第一行head
2)3使用 僅過(guò)濾到第一列csvcut
3)使用干凈的方式顯示 csvlook
csvgrep
在使用歷史數(shù)據(jù)集時(shí),我們需要確保日期和時(shí)間列的格式正確(甚至基本的時(shí)間序列圖都無(wú)法使用)。讓我們探索Date和DateAcquired列:
雖然前20個(gè)值DateAcquired看起來(lái)不錯(cuò),但該Date列中的一些值在大多數(shù)數(shù)據(jù)可視化工具(如)中無(wú)法很好地發(fā)揮作用1976-77。我們只需選擇范圍內(nèi)的第一年即可輕松解決這一問(wèn)題(例如,1976從范圍內(nèi)1976-77)。在此之前,讓我們找出與該模式匹配的行數(shù)。
我們可以使用該csvgrep工具提取與正則表達(dá)式匹配的一列(或多列)中的所有值。我們csvgrep使用-c標(biāo)記指定要匹配的列。我們csvgrep使用-regex標(biāo)志指定要使用的正則表達(dá)式。正則表達(dá)式^([0-9]*-[0-9]*)匹配以連字符(-)分隔的數(shù)字對(duì)。
由于我們?cè)诹猩纤阉髂J降膶?shí)例,因此Date我們編寫(xiě)以下代碼:
讓我們修改并運(yùn)行我們構(gòu)建為合并的管道csvgrep:
csvstat
精彩!現(xiàn)在我們知道它可以工作,讓我們將正則表達(dá)式應(yīng)用于整個(gè)Date列(而不只是前10行),并確定有多少行與該模式匹配。該csvstat工具將CSV作為輸入(stdin),并計(jì)算摘要統(tǒng)計(jì)信息。我們可以使用該--count標(biāo)志來(lái)指定只需要行數(shù)。
我們也可以刪除csvcut,head和,csvlook因?yàn)槲覀儾恍枰@示輸出。
看起來(lái)有18,073行與該模式匹配?,F(xiàn)在計(jì)算一下:
1)多少行與4位數(shù)字年份模式匹配
2)數(shù)據(jù)集包含多少行
我們可以使用正則表達(dá)式(^[0-9]{4}$)查找所有4位數(shù)字的年份值并將結(jié)果通過(guò)管道傳遞給csvstat:
最后,要獲取數(shù)據(jù)集的總行數(shù),我們可以將wc命令與-l標(biāo)志一起使用(僅顯示行數(shù)):
如果將與4位數(shù)字的年份正則表達(dá)式(76263)相匹配的行數(shù)與與年份范圍的正則表達(dá)式(18073)相匹配的行數(shù)相結(jié)合,則會(huì)得到(94336)行。鑒于總共有137,382行,這是我們分析的一個(gè)很好的起點(diǎn)!
填寫(xiě)下面表單即可預(yù)約申請(qǐng)免費(fèi)試聽(tīng)!怕錢(qián)不夠?可先就業(yè)掙錢(qián)后再付學(xué)費(fèi)! 怕學(xué)不會(huì)?助教全程陪讀,隨時(shí)解惑!擔(dān)心就業(yè)?一地學(xué)習(xí),可推薦就業(yè)!
?2007-2022/ 5wd995.cn 北京漫動(dòng)者數(shù)字科技有限公司 備案號(hào): 京ICP備12034770號(hào) 監(jiān)督電話:010-53672995 郵箱:bjaaa@aaaedu.cc