Linux資料分析必備:9個實用指令大全
數據分析是當今最熱門的技能之一,它可以幫助我們從海量的數據中提取有價值的信息,支持決策和創新。但是,要進行有效的數據分析,我們不僅需要掌握相關的理論和方法,還需要熟練使用一些工具和平台。 Linux系統是資料分析師常用的作業系統之一,它提供了許多強大且靈活的命令,可以幫助我們處理各種資料問題。本文將為你介紹Linux系統下資料分析常用的9個指令,以及它們的功能和用法。無論你是Linux新手還是老手,這些指令都會讓你的數據分析工作更有效率、更方便。

一、head與tail
首先,讓我們先從檔案處理開始。文件中有什麼內容?其格式如何?大家可以使用cat指令在終端機中顯示文件,但其顯然不適合處理內容較長的文件。
輸入head與tail,二者能夠完整顯示文件中的指定行數內容。如果大家未指定行數,則預設顯示其中10行。
1. $ tail -n 3 jan2017articles.csv 2. 02 Jan 2017,Article,Scott Nesbitt,3 tips for effectively using wikis for documentation,1 ,/article/17/1/tips-using-wiki-documentation,"Documentation, Wiki",710 3. 02 Jan 2017,Article,Jen Wike Huger,The Opensource.com preview for January,0,/article/17 /1/editorial-preview-january,,358 4. 02 Jan 2017,Poll,Jason Baker,What is your open source New Year's resolution?,1,/poll/1 7/1/what-your-open-source-new-years-resolution,,186
在最後三行中,我能夠找到日期、作者姓名、標題以及其他一些資訊。不過由於缺少列頭,我不清楚各列的具體意義。以下查看各列的具體標題:
1. $ head -n 1 jan2017articles.csv 2. Post date,Content type,Author,Title,Comment count,Path,Tags,Word count
現在一切都非常明確,我們可以看到發布日期、內容類型、作者、標題、提交次數、相關URL、各文章標籤以及字數。
二、wc
#但如果需要分析數百甚至上千篇文章,又該如何處理?這裡就要使用wc命令了——其為“字數”一詞的縮寫。 wc能夠對檔案的位元組、字元、單字或行數進行計數。在本範例中,我們希望了解文章中的行數。
- $ wc -l jan2017articles.csv 93 jan2017articles.csv
本文件共有93行,考慮到第一行中包含文件標題,因此可以推測此文件是一份包含92篇文章的清單。
三、grep
#下面提出新的問題:其中有多少文章與安全主題有關?為了實現目標,我們假定需要的文章會在標題、標籤或其他位置提到安全這一字眼。這時,grep工具可用於透過特定字元搜尋檔案或實現其他搜尋模式。這是一款極為強大的工具,因為我們甚至能夠利用正規表示式建立極為精確的匹配模式。不過這裡,我們只需要尋找一條簡單的字串。
1. $ grep -i "security" jan2017articles.csv 2. 30 Jan 2017,Article,Tiberius Hefflin,4 ways to improve your security online right now,3, /article/17/1/4-ways-improve-your-online-security,Security and encryption,1242 3. 28 Jan 2017,Article,Subhashish Panigrahi,How communities in India support privacy and software freedom,0,/article/17/1/how-communities-india-support-privacy-software-freedom,Security and encryption,453 4. 27 Jan 2017,Article,Alan Smithee,Data Privacy Day 2017: Solutions for everyday privacy ,5,/article/17/1/every-day-privacy,"Big data, Security and encryption",1424 5. 04 Jan 2017,Article,Daniel J Walsh,50 ways to avoid getting hacked in 2017,14,/article /17/1/yearbook-50-ways-avoid-getting-hacked,"Yearbook, 2016 Open Source Yearbook, Security and encryption, Containers, Docker, Linux",2143 我们使用的格式为grep加-i标记(告知grep不区分大小写),再加我们希望搜索的模式,最后是我们所搜索的目标文件的 位置。最后我们找到了
4篇安全相關文章。如果搜尋的範圍更具體,我們可以使用pipe——它能夠將grep同wc指令加以結合,用以了解其中有多少行提到了安全內容。
$ grep -i "security" jan2017articles.csv | wc -l 4
這樣,wc會提取grep指令的輸出結果並將其作為輸入內容。很明顯,這種結合再加上一點shell腳本,終端將立即變成一個強大的資料分析工具。
四、tr
在多數分析場景下,我們都會面對CSV檔案-但我們該如何將其轉換為其他格式以實現不同應用方式?這裡,我們將其轉化為HTML形式以透過表格進行資料使用。 tr指令可協助大家達成此目標,它可將一類字元轉換為另一類。同樣的,大家也可以配合pipe指令實現輸出/輸入對接。
下面,我們試試另一個多部分範例,即建立一個TSV(即製表符分隔值)文件,其中只包含發表於1月20日的文章。
=$ grep "20 Jan 2017" jan2017articles.csv | tr ',' '/t' > jan20only.tsv
首先,我們利用grep進行日期查詢。我們將此結果pipe至tr指令,並利用後者將全部逗號替換為tab(表示為’/t’)。但結果去哪了?這裡我們使用〉字元將結果輸出為新檔案而非螢幕結果。如此一來,我們可以dqywjan20only.tsv檔案中一定包含預期的資料。
$ cat jan20only.tsv 20 Jan 2017 Article Kushal Das 5 ways to expand your project's contributor base 2 /article/17/1/expand-project-contributor-base Getting started 690 20 Jan 2017 Article D Ruth Bavousett How to write web apps in R with Shiny 2 /article/17/1/writing-new-web-apps-shiny Web development 218 20 Jan 2017 Article Jason Baker "Top 5: Shell scripting the Cinnamon Linux desktop environment and more" 0 /article/17/1/top-5-january-20 Top 5 214 20 Jan 2017 Article Tracy Miranda How is your community promoting diversity? 1 /article/17/1/take-action-diversity-tech Diversity and inclusion 1007
五、sort
如果我们先要找到包含信息最多的特定列,又该如何操作?假设我们需要了解哪篇文章包含最长的新文章列表,那么面对之前得出的1月20日文章列表,我们可以使用sort命令对列字数进行排序。在这种情况下,我们并不需要使用中间文件,而可以继续使用pipe。不过将长命令链拆分成较短的部分往往能够简化整个操作过程。
- ‘/t’ -k8 jan20only.tsv | head -n 1
- 20 Jan 2017 Article Tracy Miranda How is your community promoting diversity? 1 /article/17/1/take-action-diversity-tech Diversity and inclusion 1007
以上是一条长命令,我们尝试进行拆分。首先,我们使用sort命令对字数进行排序。-nr选项告知sort以数字排序,并将结果进行反向排序(由大到小)。此后的-t则告知其中的分隔符为。其中的要求此shell为一条需要处理的字符串,并将/n返回为tab。而-k8部分则告知sort命令使用第八列,即本示例中进行字数统计的目标列。
最后,输出结果被pipe至head,处理后在结果中显示此文件中包含最多字数的文章标题。
六、sed
大家可能还需要在文件中选择特定某行。这里可以使用sed。如果希望将全部包含标题的多个文件加以合并,并只为整体文件显示一组标题,即需要清除额外内容; 或者希望只提取特定行范围,同样可以使用sed。另外,sed还能够很好地完成批量查找与替换任务。
下面立足之前的文章列表创建一个不含标题的新文件,用于同其他文件合并(例如我们每月都会定期生成某个文件,现在需要将各个月份的内容进行合并)。
- $ sed ‘1 d’ jan2017articles.csv > jan17no_headers.csv
其中的“1 d”选项要求sed删除第一行。
七、cut
了解了如何删除行,那么我们该如何删除列?或者说如何只选定某一列?下面我们尝试为之前生成的列表创建一份新的作者清单。
- $ cut -d’,’ -f3 jan17no_headers.csv > authors.txt
在这里,通过cut与-d相配合代表着我们需要第三列(-f3),并将结果发送至名为authors.txt的新文件。
八、uniq
作者清单已经完成,但我们要如何知悉其中包含多少位不同的作者?每位作者又各自编写了多少篇文章?这里使用unip。下面我们对文件进行sort排序,找到唯一值,而后计算每位作者的文章数量,并用结果替换原本内容。
- sort authors.txt | uniq -c > authors.txt
现在已经可以看到每位作者的对应文章数,下面检查最后三行以确保结果正确。
- $ tail -n3 authors-sorted.txt
- 1 Tracy Miranda
- 1 Veer Muchandi
- 3 VM (Vicky) Brasseur
九、awk
最后让我们了解最后一款工具,awk。awk是一款出色的替换性工具,当然其功能远不止如此。下面我们重新回归1月12日文章列表TSV文件,利用awk创建新列表以标明各篇文章的作者以及各作者编写的具体字数。
- $ awk -F “/t” ‘{print NF}’ jan20only.tsv
- # Kushal Das 690
- D Ruth Bavousett 218
- # Jason Baker 214
- Tracy Miranda 1007
#其中的-F “/t”用於告知awk目前處理的是由tab分隔的資料。在大括號內,我們為awk提供執行程式碼。 代表要求其將輸出第三行,而NF則代表輸出最後一行(即'字段數'的縮寫),並在兩項結果間添加兩個空格以進行明確劃分。
雖然這裡列舉的例子規模較小,看似不必使用上述工具解決,但如果將範圍擴大到包含93000行的文件,那麼它顯然很難利用電子表格程式進行處理。
利用這些簡單的工具與小型腳本,大家可以避免使用資料庫工具並輕鬆完成大量資料統計工作。無論您是專業人士還是業餘愛好者,它的作用都不容忽視。
透過本文,你已經了解Linux系統下資料分析常用的9個指令,以及它們的功能和用法。這些命令涵蓋了檔案操作、目錄管理、輸出重定向、管道、連結等方面,可以幫助你在Linux系統下進行各種資料處理和分析。當然,這些命令只是Linux系統提供的眾多命令中的一部分,如果你想深入學習Linux系統和數據分析,還需要不斷地探索和實踐。希望這篇文章能對你的學習和工作有所幫助,也歡迎你分享你自己使用或發現的其他實用的Linux指令。
以上是Linux資料分析必備:9個實用指令大全的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Linux的主要用途包括:1.服務器操作系統,2.嵌入式系統,3.桌面操作系統,4.開發和測試環境。 Linux在這些領域表現出色,提供了穩定性、安全性和高效的開發工具。

互聯網運行不依賴單一操作系統,但Linux在其中扮演重要角色。 Linux廣泛應用於服務器和網絡設備,因其穩定性、安全性和可擴展性受歡迎。

Linux操作系統的核心是其命令行界面,通過命令行可以執行各種操作。 1.文件和目錄操作使用ls、cd、mkdir、rm等命令管理文件和目錄。 2.用戶和權限管理通過useradd、passwd、chmod等命令確保系統安全和資源分配。 3.進程管理使用ps、kill等命令監控和控制系統進程。 4.網絡操作包括ping、ifconfig、ssh等命令配置和管理網絡連接。 5.系統監控和維護通過top、df、du等命令了解系統運行狀態和資源使用情況。

介紹 Linux是一個強大的操作系統,由於其靈活性和效率,開發人員,系統管理員和電源用戶都喜歡。但是,經常使用長而復雜的命令可能是乏味的

Linux適用於服務器、開發環境和嵌入式系統。 1.作為服務器操作系統,Linux穩定高效,常用於部署高並發應用。 2.作為開發環境,Linux提供高效的命令行工具和包管理系統,提升開發效率。 3.在嵌入式系統中,Linux輕量且可定制,適合資源有限的環境。

簡介:通過基於Linux的道德黑客攻擊數字邊界 在我們越來越相互聯繫的世界中,網絡安全至關重要。 道德黑客入侵和滲透測試對於主動識別和減輕脆弱性至關重要

Linux基礎學習從零開始的方法包括:1.了解文件系統和命令行界面,2.掌握基本命令如ls、cd、mkdir,3.學習文件操作,如創建和編輯文件,4.探索高級用法如管道和grep命令,5.掌握調試技巧和性能優化,6.通過實踐和探索不斷提陞技能。

Linux在服務器、嵌入式系統和桌面環境中的應用廣泛。 1)在服務器領域,Linux因其穩定性和安全性成為託管網站、數據庫和應用的理想選擇。 2)在嵌入式系統中,Linux因其高度定制性和高效性而受歡迎。 3)在桌面環境中,Linux提供了多種桌面環境,滿足不同用戶需求。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SublimeText3漢化版
中文版,非常好用

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),