数据科学家必备!12个基本命令行工具帮你摆脱鼠标

系统 其他OS
本篇文章简要介绍了12种类Unix操作系统命令行工具,以及这些命令行工具对数据科学研究和数据科学家的价值。

 

 

命令行工具

 

 

大数据文摘作品

 

 

编译:汪小七、Katrine Ren、夏雅薇

 

本篇文章作者是Matthew Mayo,选自KDnuggets(一个著名的数据挖掘网站)。简要介绍了12种类Unix操作系统命令行工具,以及这些命令行工具对数据科学研究和数据科学家的价值。

这篇文章概述了十二个可以用于数据科学项目的类Unix操作系统命令行工具。

这一系列工具不包括任何基本的文件管理命令(pwd、ls、mkdir、rm……)和远程桌面管理工具(rsh、ssh……),但是从数据科学角度来看,这些命令行工具都是比较实用的,通常用来进行不同程度的数据检验和数据处理。

这一系列命令行工具都包含在一种特殊的类Unix操作系统中。

这些固然都是最基础的操作命令,但我还是鼓励你针对某些命令行自行查找更多的应用实例。

在本文中,工具名都可以直接链接到维基百科词条,而不是Linux的使用手册页面,我觉得前者对于新手来说更友好一点。

Linux的使用手册页面:https://linux.die.net/man/

1. wget

wget是一个文件检索工具,用于从远程位置下载文件,其下载远程文件的基本用法如下:

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

  1. ~$ wget https://raw.githubusercontent.com/uiuc-cse/data-fa14/gh-pages/data/iris.csv 
  2. --2018-03-20 18:27:21--  https://raw.githubusercontent.com/uiuc-cse/data-fa14/gh-pages/data/iris.csv 
  3. Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.20.133 
  4. Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.20.133|:443... connected. 
  5. HTTP request sent, awaiting response... 200 OK 
  6. Length: 3716 (3.6K) [text/plain] 
  7. Saving to: ‘iris.csv’ 
  8. iris.csv 
  9. 100 [=======================================================================================================>]   3.63K  --.-KB/s    in 0s      
  10. 2018-03-20 18:27:21 (19.9 MB/s) - ‘iris.csv’ saved [3716/3716] 

2. cat

cat是将文件内容标准输出的工具,此名称来自连接(concatenate)这个词。它可以用于实现一些较复杂的文件处理,包括将文件合并在一起(也就是真正的文件连接)、将文件追加到另一个文件中、以及给文件行编号等功能。

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

  1. ~$ cat iris.csv 
  2. sepal_length,sepal_width,petal_length,petal_width,species 
  3. 5.1,3.5,1.4,0.2,setosa 
  4. 4.9,3,1.4,0.2,setosa 
  5. 4.7,3.2,1.3,0.2,setosa 
  6. 4.6,3.1,1.5,0.2,setosa 
  7. 5,3.6,1.4,0.2,setosa 
  8. ... 
  9. 6.7,3,5.2,2.3,virginica 
  10. 6.3,2.5,5,1.9,virginica 
  11. 6.5,3,5.2,2,virginica 
  12. 6.2,3.4,5.4,2.3,virginica 
  13. 5.9,3,5.1,1.8,virginica 

3. wc

wc命令用于生成字数统计、行计数、字节计数以及与文本文件相关的内容。在没有设置其他选项的情况下,wc的默认输出是一行,由左到右依次是行数、字数统计(注意:每一行上没有空格中断的单个字符串被算作一个单词)、字符计数和文件名。

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

  1. ~$ wc iris.cs 
  2. 151  151 3716 iris.csv 

4. head

head命令是标准地输出文件的前n行(默认为10行),显示行数可以用-n项设置,如下。

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

  1. ~$ head -n 5 iris.csv 
  2. sepal_length,sepal_width,petal_length,petal_width,species 
  3. 5.1,3.5,1.4,0.2,setosa 
  4. 4.9,3,1.4,0.2,setosa 
  5. 4.7,3.2,1.3,0.2,setosa 
  6. 4.6,3.1,1.5,0.2,setosa 

5. tail

接下来猜猜看tail是用来实现什么功能的?

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

  1. ~$ tail -n 5 iris.csv 
  2. 6.7,3,5.2,2.3,virginica 
  3. 6.3,2.5,5,1.9,virginica 
  4. 6.5,3,5.2,2,virginica 
  5. 6.2,3.4,5.4,2.3,virginica 
  6. 5.9,3,5.1,1.8,virginica 

6. find

find是用于搜索特定文件的文件系统工具。以下命令就是在树结构中搜索特殊文件的例子,即从当前目录(“.”)开始,搜索以“iris”开头,并以任意字符结尾,类型为普通文件类型(“-type f”)的文件:

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

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

7. cut

cut命令用于文本分割,虽然cut用于分割文本可以在各种标准下进行,但是它对于CSV文件中列数据的提取尤其有用。以下命令即为输出使用逗号分隔符("-d ','")的iris.csv文件的第五列(“- f 5”):

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

  1. ~$ cut -d ',' -f 5 iris.csv 
  2. species 
  3. setosa 
  4. setosa 
  5. setosa 
  6. ... 

8. uniq

uniq是通过将文本中的重复行进行去重,从而将文本输出标准化的工具。就其本身而言,这似乎并没多大用处,但是当其用于构建pipelines时(将一个命令的输出连接到另一个命令的输入等等)将变得非常有用。

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

以下命令结果是iris数据集的第五列中包含的不同类别及其计数:

  1. ~$ tail -n 150 iris.csv | cut -d "," -f 5 | uniq -c 
  2. 50 setosa 
  3. 50 versicolor 
  4. 50 virginica 

奶牛说了什么

9. awk

awk实际上不是一个"命令",而是一套完整的编程语言。它用于处理和提取文本, 且可以从命令行中以单行命令的形式调用。

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

完全掌握awk是需要一些时间的,但在此之前,这里有一个可以练习的例子。考虑到样本文件iris.csv相当有限的文本多样性,以下这行命令就可以调用awk,在给定的文件(“iris.csv”)中搜索字符串“setosa”,并将所有项(在$0变量中保存的)一个一个地标准输出如下:

  1. ~$ awk '/setosa/ { print $0 }' iris.csv 
  2. 5.1,3.5,1.4,0.2,setosa 
  3. 4.9,3,1.4,0.2,setosa 
  4. 4.7,3.2,1.3,0.2,setosa 
  5. 4.6,3.1,1.5,0.2,setosa 
  6. 5,3.6,1.4,0.2,setosa 

10. grep

grep是另一种文本处理工具,用来查找匹配字符串和正则表达式。

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

  1. ~$ grep -i "vir" iris.csv 
  2. 6.3,3.3,6,2.5,virginica 
  3. 5.8,2.7,5.1,1.9,virginica 
  4. 7.1,3,5.9,2.1,virginica 
  5. ... 

当你需要花大量的时间进行文本处理时,grep无疑是你需要掌握的一个好工具,更多有用的信息请参考网站:

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

11. sed

sed是一个流编辑器,也是一个文本处理和转换工具,类似于awk。下面我们将用此命令把iris.csv文件中的“setosa”改为“irissetosa”:

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

  1. ~$ sed 's/setosa/iris-setosa/g' iris.csv > output.csv 
  2. ~$ head output.csv 
  3. sepal_length,sepal_width,petal_length,petal_width,species 
  4. 5.1,3.5,1.4,0.2,iris-setosa 
  5. 4.9,3,1.4,0.2,iris-setosa 
  6. 4.7,3.2,1.3,0.2,iris-setosa 
  7. ... 

12. history

history非常简单,但也非常有用,特别是当你需要用命令语句来完成一些重复性的数据准备工作时。

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

  1. ~$ history547  tail iris.csv 
  2. 548  tail -n 150 iris.csv 
  3. 549  tail -n 150 iris.csv | cut -d "," -f 5 | uniq -c 
  4. 550  clear 
  5. 551  history 

至此,这篇文章已经对这12个方便的命令行工具都进行了简单的介绍,这只是对数据科学(或其他任何目标)可能用到的命令行工具的一种粗浅的体验。现在,是时候让它们把你的生产力从鼠标中解放出来了。

原文链接:

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

【本文是51CTO专栏机构大数据文摘的原创译文,微信公众号“大数据文摘( id: BigDataDigest)”】

     大数据文摘二维码

戳这里,看该作者更多好文

责任编辑:赵宁宁 来源: 51CTO专栏
相关推荐

2016-08-02 17:00:12

Hadoop大数据系统

2017-08-04 15:53:10

大数据真伪数据科学家

2019-11-29 18:03:27

数学R语言算法

2020-04-08 17:38:24

Python数据音乐

2019-07-05 10:29:17

大数据数据科学家

2019-09-11 14:34:13

排序算法数据科学

2017-11-21 14:42:30

数据科学统计学习机器学习

2012-12-26 10:51:20

数据科学家

2019-03-25 21:18:41

数据科学家大数据技能

2018-03-27 11:02:55

2018-12-24 08:37:44

数据科学家数据模型

2010-09-02 13:25:41

Linux命令行

2012-12-06 15:36:55

CIO

2016-03-10 13:56:42

数据科学数据科学家数据分析

2014-01-03 11:28:29

命令行工具

2018-05-03 09:11:51

数据科学家职业数据科学

2018-02-28 15:03:03

数据科学家数据分析职业

2018-10-31 11:00:06

数据科学统计贝叶斯

2018-10-16 14:37:34

数据科学家数据分析数据科学

2020-08-28 13:49:13

数据统计学面试
点赞
收藏

51CTO技术栈公众号