旗下產(chǎn)業(yè): A產(chǎn)業(yè)/?A實(shí)習(xí)/?A計(jì)劃
全國(guó)統(tǒng)一咨詢熱線:010-5367 2995
首頁 > 熱門文章 > 大數(shù)據(jù)分析 > 大數(shù)據(jù)分析如何使用命令行和csvkit清潔CSV數(shù)據(jù)

大數(shù)據(jù)分析如何使用命令行和csvkit清潔CSV數(shù)據(jù)

時(shí)間:2020-10-14來源:m.5wd995.cn點(diǎn)擊量:作者:Sissi
時(shí)間:2020-10-14點(diǎn)擊量:作者:Sissi



  現(xiàn)代藝術(shù)博物館是世界上最有影響力的博物館之一,他們已經(jīng)發(fā)布了有關(guān)其收藏中藝術(shù)品的數(shù)據(jù)集。但是,數(shù)據(jù)集存在一些數(shù)據(jù)質(zhì)量問題,需要清理。
 

  在之前我們發(fā)布的文章中,我們討論了如何使用Python和Pandas清理數(shù)據(jù)集。在大數(shù)據(jù)分析如何使用命令行和csvkit清潔CSV數(shù)據(jù)中,我們將學(xué)習(xí)如何使用該csvkit庫來獲取和探索表格數(shù)據(jù)。
 

  為什么使用命令行?
 

  好問題!在云大數(shù)據(jù)分析環(huán)境中工作時(shí),有時(shí)您只能訪問服務(wù)器的外殼。在這些情況下,精通命令行大數(shù)據(jù)分析才是真正的超級(jí)大國(guó)。隨著您變得更加熟練,使用命令行執(zhí)行某些大數(shù)據(jù)分析任務(wù)比編寫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)化的庫。它是用Python編寫的,但是主要界面是命令行。您可以csvkit使用安裝pip:

大數(shù)據(jù)分析如何使用命令行和csvkit清潔CSV數(shù)據(jù)
 

  您將需要這個(gè)庫來跟隨大數(shù)據(jù)分析如何使用命令行和csvkit清潔CSV數(shù)據(jù)。
 

  數(shù)據(jù)采集
 

  MOMA藝術(shù)品數(shù)據(jù)集可在博物館的Github回購中找到。讓我們使用從Githubcurl下載Artworks.csv。curl是大多數(shù)Shell環(huán)境中內(nèi)置的工具,使您可以在服務(wù)器之間傳輸數(shù)據(jù)。Github為每個(gè)文件提供直接URL,您可以通過單擊Raw按鈕找到它們。
 

  最后,我們將使用>運(yùn)算符將輸出重定向curl到名為的文件artworks.csv。

大數(shù)據(jù)分析如何使用命令行和csvkit清潔CSV數(shù)據(jù)
 

  數(shù)據(jù)探索
 

  我們可以使用該head命令顯示n文件的第一行(默認(rèn)為10行)。要顯示前三行,可以使用以下任一命令:

大數(shù)據(jù)分析如何使用命令行和csvkit清潔CSV數(shù)據(jù)
 

  與大多數(shù)數(shù)據(jù)集一樣,第一行看起來包含列標(biāo)題。除此之外,輸出雜亂無章,很難從默認(rèn)輸出中收集其他信息。我們需要一個(gè)知道如何以可讀方式顯示CSV文件的工具。
 

  csvlook
 

  csvlook是其中的工具csvkit,可讓您以表格形式顯示和預(yù)覽CSV文件。csvlook artworks.csv將顯示整個(gè)數(shù)據(jù)集,這很麻煩進(jìn)行探索。讓我們來代替管stdout的head -5 artworks.csv,以csvlook探索前5行:

大數(shù)據(jù)分析如何使用命令行和csvkit清潔CSV數(shù)據(jù)
大數(shù)據(jù)分析如何使用命令行和csvkit清潔CSV數(shù)據(jù)
 

  這是代表管道的圖:

大數(shù)據(jù)分析如何使用命令行和csvkit清潔CSV數(shù)據(jù)
 

  盡管現(xiàn)在輸出更容易閱讀,但仍然很難探索?,F(xiàn)在,讓我們學(xué)習(xí)如何使用csvcut僅選擇一些列并顯示它們。

 

  csvcut
 

  csvcut是其中的一種工具csvkit,稱為數(shù)據(jù)解剖刀,因?yàn)樗试S您切片和修改CSV中的列。首先使用-n標(biāo)記列出所有列:

大數(shù)據(jù)分析如何使用命令行和csvkit清潔CSV數(shù)據(jù)
 

  然后,我們可以使用該-c標(biāo)志來指定所需的列。csvcut -c 1,2,3 artworks.csv | csvlook將返回前3列。您也可以自己使用列名稱:csvcut -c Artist,ArtistBio,Date。運(yùn)行這兩個(gè)命令將顯示整個(gè)數(shù)據(jù)集的3列,因此我們需要利用管道系統(tǒng)來查看僅幾行。
 

  我們可以查閱csvkit 文檔以了解csvkit實(shí)用程序之間的管道:
 

  所有csvkit實(shí)用程序都接受輸入文件作為“標(biāo)準(zhǔn)輸入”,以及文件名。這意味著我們可以使一個(gè)csvkit實(shí)用程序的輸出成為下一個(gè)的輸入。
 

  這意味著我們可以管stdout的csvcut到stdin的csvlook!我們可以建立以下管道:
 

  1)僅10使用提取第一行head

  2)3使用 僅過濾到第一列csvcut

  3)使用干凈的方式顯示 csvlook

大數(shù)據(jù)分析如何使用命令行和csvkit清潔CSV數(shù)據(jù)
大數(shù)據(jù)分析如何使用命令行和csvkit清潔CSV數(shù)據(jù)
 

  csvgrep
 

  在使用歷史數(shù)據(jù)集時(shí),我們需要確保日期和時(shí)間列的格式正確(甚至基本的時(shí)間序列圖都無法使用)。讓我們探索Date和DateAcquired列:

大數(shù)據(jù)分析如何使用命令行和csvkit清潔CSV數(shù)據(jù)
 

  雖然前20個(gè)值DateAcquired看起來不錯(cuò),但該Date列中的一些值在大多數(shù)數(shù)據(jù)可視化工具(如)中無法很好地發(fā)揮作用1976-77。我們只需選擇范圍內(nèi)的第一年即可輕松解決這一問題(例如,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我們編寫以下代碼:

大數(shù)據(jù)分析如何使用命令行和csvkit清潔CSV數(shù)據(jù)
 

  讓我們修改并運(yùn)行我們構(gòu)建為合并的管道csvgrep:

大數(shù)據(jù)分析如何使用命令行和csvkit清潔CSV數(shù)據(jù)
 

  csvstat
 

  精彩!現(xiàn)在我們知道它可以工作,讓我們將正則表達(dá)式應(yīng)用于整個(gè)Date列(而不只是前10行),并確定有多少行與該模式匹配。該csvstat工具將CSV作為輸入(stdin),并計(jì)算摘要統(tǒng)計(jì)信息。我們可以使用該--count標(biāo)志來指定只需要行數(shù)。
 

  我們也可以刪除csvcut,head和,csvlook因?yàn)槲覀儾恍枰@示輸出。

大數(shù)據(jù)分析如何使用命令行和csvkit清潔CSV數(shù)據(jù)
 

  看起來有18,073行與該模式匹配?,F(xiàn)在計(jì)算一下:
 

  1)多少行與4位數(shù)字年份模式匹配

  2)數(shù)據(jù)集包含多少行
 

  我們可以使用正則表達(dá)式(^[0-9]{4}$)查找所有4位數(shù)字的年份值并將結(jié)果通過管道傳遞給csvstat:

大數(shù)據(jù)分析如何使用命令行和csvkit清潔CSV數(shù)據(jù)
 

  最后,要獲取數(shù)據(jù)集的總行數(shù),我們可以將wc命令與-l標(biāo)志一起使用(僅顯示行數(shù)):

大數(shù)據(jù)分析如何使用命令行和csvkit清潔CSV數(shù)據(jù)
 

  如果將與4位數(shù)字的年份正則表達(dá)式(76263)相匹配的行數(shù)與與年份范圍的正則表達(dá)式(18073)相匹配的行數(shù)相結(jié)合,則會(huì)得到(94336)行。鑒于總共有137,382行,這是我們分析的一個(gè)很好的起點(diǎn)!


 

預(yù)約申請(qǐng)免費(fèi)試聽課

填寫下面表單即可預(yù)約申請(qǐng)免費(fèi)試聽!怕錢不夠?可先就業(yè)掙錢后再付學(xué)費(fèi)! 怕學(xué)不會(huì)?助教全程陪讀,隨時(shí)解惑!擔(dān)心就業(yè)?一地學(xué)習(xí),可推薦就業(yè)!

?2007-2021/北京漫動(dòng)者教育科技有限公司版權(quán)所有
備案號(hào):京ICP備12034770號(hào)

?2007-2022/ m.5wd995.cn 北京漫動(dòng)者數(shù)字科技有限公司 備案號(hào): 京ICP備12034770號(hào) 監(jiān)督電話:010-53672995 郵箱:bjaaa@aaaedu.cc

京公網(wǎng)安備 11010802035704號(hào)

網(wǎng)站地圖