您的位置:首頁>正文

資料科學家必備!12個基本命令列工具幫你擺脫滑鼠

大資料文摘作品

編譯:汪小七、Katrine Ren、夏雅薇

本篇文章作者是Matthew Mayo, 選自KDnuggets(一個著名的資料採擷網站)。 簡要介紹了12種類Unix作業系統命令列工具, 以及這些命令列工具對資料科學研究和資料科學家的價值。

這篇文章概述了十二個可以用於資料科學專案的類Unix作業系統命令列工具。

這一系列工具不包括任何基本的文件管理命令(pwd、ls、mkdir、rm……)和遠端桌面管理工具(rsh、ssh……), 但是從資料科學角度來看, 這些命令列工具都是比較實用的, 通常用來進行不同程度的資料核對和資料處理。

這一系列命令列工具都包含在一種特殊的類Unix作業系統中。

這些固然都是最基礎的操作命令, 但我還是鼓勵你針對某些命令列自行查找更多的應用實例。

在本文中, 工具名都可以直接連結到維琪百科詞條, 而不是Linux的使用手冊頁面, 我覺得前者對於新手來說更友好一點。

Linux的使用手冊頁面:

https://linux.die.net/man/

wget

wget是一個檔檢索工具, 用於從遠端位置下載檔案, 其下載遠端文件的基本用法如下:

wget:

https://en.wikipedia.org/wiki/wget

~$ wget https://raw.githubusercontent.com/uiuc-cse/data-fa14/gh-pages/data/iris.csv--2018-03-20 18:27:21-- https://raw.githubusercontent.com/uiuc-cse/data-fa14/gh-pages/data/iris.csvResolving raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.20.133Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.20.133|:443... connected.HTTP request sent, awaiting response... 200 OKLength: 3716 (3.6K) [text/plain]Saving to: ‘iris.csv’iris.csv100 [=======================================================================================================>] 3.63K --.-KB/s in 0s 2018-03-20 18:27:21 (19.9 MB/s) - ‘iris.csv’ saved [3716/3716]

cat

cat是將檔內容標準輸出的工具, 此名稱來自連接(concatenate)這個詞。 它可以用於實現一些較複雜的檔處理, 包括將檔合併在一起(也就是真正的檔連接)、將檔追加到另一個檔中、以及給檔行編號等功能。

cat:

https://en.wikipedia.org/wiki/Cat_(Unix)

~$ cat iris.csvsepal_length,sepal_width,petal_length,petal_width,species5.1,3.5,1.4,0.2,setosa4.9,3,1.4,0.2,setosa4.7,3.2,1.3,0.2,setosa4.6,3.1,1.5,0.2,setosa5,3.6,1.4,0.2,setosa...6.7,3,5.2,2.3,virginica6.3,2.5,5,1.9,virginica6.5,3,5.2,2,virginica6.2,3.4,5.4,2.3,virginica5.9,3,5.1,1.8,virginica

wc

wc命令用於生成字數統計、行計數、位元組計數以及與文字檔相關的內容。 在沒有設置其他選項的情況下, wc的預設輸出是一行,

由左到右依次是行數、字數統計(注意:每一行上沒有空格中斷的單個字串被算作一個單詞)、字元計數和檔案名。

wc:

https://en.wikipedia.org/wiki/Wc_(Unix)

~$ wc iris.cs151 151 3716 iris.csv

head

head命令是標準地輸出檔的前n行(預設為10行), 顯示行數可以用-n項設置, 如下。

Head:

https://en.wikipedia.org/wiki/Head_(Unix)

~$ head -n 5 iris.csvsepal_length,sepal_width,petal_length,petal_width,species5.1,3.5,1.4,0.2,setosa4.9,3,1.4,0.2,setosa4.7,3.2,1.3,0.2,setosa4.6,3.1,1.5,0.2,setosa

tail

接下來猜猜看tail是用來實現什麼功能的?

tail:

https://en.wikipedia.org/wiki/Tail_(Unix)

~$ tail -n 5 iris.csv6.7,3,5.2,2.3,virginica6.3,2.5,5,1.9,virginica6.5,3,5.2,2,virginica6.2,3.4,5.4,2.3,virginica5.9,3,5.1,1.8,virginica

運行命令列魔法

find

find是用於搜索特定檔的檔案系統工具。 以下命令就是在樹結構中搜索特殊檔的例子, 即從目前的目錄(“.”)開始, 搜索以“iris”開頭, 並以任意字元結尾, 類型為普通檔案類型(“-type f”)的檔:

find:

https://en.wikipedia.org/wiki/Find_(Unix)

~$ find . -name 'iris*' -type f./iris.csv./notebooks/kmeans-sharding-init/sharding/tests/results/iris_time_results.csv./notebooks/ml-workflows-python-scratch/iris_raw.csv./notebooks/ml-workflows-python-scratch/iris_clean.csv...

cut

cut命令用於文本分割, 雖然cut用於分割文本可以在各種標準下進行, 但是它對於CSV檔中列資料的提取尤其有用。 以下命令即為輸出使用逗號分隔符號("-d ','")的iris.csv文件的第五列(“- f 5”):

cut:

https://en.wikipedia.org/wiki/Cut_(Unix)

~$ cut -d ',' -f 5 iris.csvspeciessetosasetosasetosa...

uniq

uniq是通過將文本中的重複行進行去重, 從而將文本輸出標準化的工具。 就其本身而言, 這似乎並沒多大用處, 但是當其用於構建pipelines時(將一個命令的輸出連接到另一個命令的輸入等等)將變得非常有用。

uniq:

https://en.wikipedia.org/wiki/Uniq

以下命令結果是iris資料集的第五列中包含的不同類別及其計數:

~$ tail -n 150 iris.csv | cut -d "," -f 5 | uniq -c50 setosa50 versicolor50 virginica

奶牛說了什麼

awk

awk實際上不是一個"命令",而是一套完整的程式設計語言。

它用於處理和提取文本, 且可以從命令列中以單行命令的形式調用。

awk:

https://en.wikipedia.org/wiki/AWK

完全掌握awk是需要一些時間的, 但在此之前, 這裡有一個可以練習的例子。 考慮到樣本檔iris.csv相當有限的文本多樣性, 以下這行命令就可以調用awk, 在給定的檔(“iris.csv”)中搜索字串“setosa”, 並將所有項(在$0變數中保存的)一個一個地標準輸出如下:

~$ awk '/setosa/ { print $0 }' iris.csv5.1,3.5,1.4,0.2,setosa4.9,3,1.4,0.2,setosa4.7,3.2,1.3,0.2,setosa4.6,3.1,1.5,0.2,setosa5,3.6,1.4,0.2,setosa

grep

grep是另一種文本處理工具, 用來查找匹配字串和規則運算式。

grep:

https://en.wikipedia.org/wiki/Grep

~$ grep -i "vir" iris.csv6.3,3.3,6,2.5,virginica5.8,2.7,5.1,1.9,virginica7.1,3,5.9,2.1,virginica...

當你需要花大量的時間進行文本處理時, grep無疑是你需要掌握的一個好工具, 更多有用的資訊請參考網站:

https://www.thegeekstuff.com/2009/03/15-practical-unix-grep-command-examples。

sed

sed是一個流編輯器, 也是一個文本處理和轉換工具, 類似於awk。 下面我們將用此命令把iris.csv文件中的“setosa”改為“irissetosa”:

sed:

https://en.wikipedia.org/wiki/Sed

~$ sed 's/setosa/iris-setosa/g' iris.csv > output.csv~$ head output.csvsepal_length,sepal_width,petal_length,petal_width,species5.1,3.5,1.4,0.2,iris-setosa4.9,3,1.4,0.2,iris-setosa4.7,3.2,1.3,0.2,iris-setosa...

history

history非常簡單, 但也非常有用,

特別是當你需要用命令語句來完成一些重複性的資料準備工作時。

History:

https://en.wikipedia.org/wiki/History_(Unix)

~$ history547 tail iris.csv548 tail -n 150 iris.csv549 tail -n 150 iris.csv | cut -d "," -f 5 | uniq -c550 clear551 history

至此, 這篇文章已經對這12個方便的命令列工具都進行了簡單的介紹, 這只是對資料科學(或其他任何目標)可能用到的命令列工具的一種粗淺的體驗。 現在, 是時候讓它們把你的生產力從滑鼠中解放出來了。

原文連結:

https://www.kdnuggets.com/2018/03/top-12-essential-command-line-tools-data-scientists.html

同類文章
Next Article
喜欢就按个赞吧!!!
点击关闭提示