加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

数据科学家的命令行技巧

发布时间:2018-08-16 01:24:16 所属栏目:教程 来源:Tocy, kevinlinkai, 边城, 琪花亿草, 雪
导读:技术沙龙 | 邀您于8月25日与国美/AWS/转转三位专家共同探讨小程序电商实战 对于许多数据科学家来说,数据操作起始于Pandas或Tidyverse。从理论上看,这个概念没有错。毕竟,这是为什么这些工具首先存在的原因。然而,对于分隔符转换等简单任务来说,这些选
副标题[/!--empirenews.page--] 技术沙龙 | 邀您于8月25日与国美/AWS/转转三位专家共同探讨小程序电商实战

数据科学家的命令行技巧

对于许多数据科学家来说,数据操作起始于Pandas或Tidyverse。从理论上看,这个概念没有错。毕竟,这是为什么这些工具首先存在的原因。然而,对于分隔符转换等简单任务来说,这些选项通常可能是过于重量级了。

有意掌握命令行应该在每个开发人员的技能链上,特别是数据科学家。学习shell中的来龙去脉无可否认地会让你更高效。除此之外,命令行还在计算方面有一次伟大的历史记录。例如,awk - 一种数据驱动的脚本语言。Awk首次出现于1977年,它是在传奇的K&R一书中的K,Brian Kernighan的帮助下出现的。在今天,大约50年之后,awk仍然与每年出现的新书保持相关联! 因此,可以肯定的是,对命令行技术的投入不会很快贬值的。

我们会谈及的内容

  • ICONV
  • HEAD
  • TR
  • WC
  • SPLIT
  • SORT & UNIQ
  • CUT
  • PASTE
  • JOIN
  • GREP
  • SED
  • AWK
  • ICONV

文件编码总是棘手的问题。目前大部分文件都是采用的 UTF-8 编码。要想了解 UTF-8 的魔力,可以看看这个优秀的视频。尽管如此,有时候我们还是会收到非 UTF-8 编码的文件。这种情况下就需要尝试转码。iconv 就是这种状况下的救世主。iconv 是一个简单的程序,可以输入某种编码的文本,然后以另一种编码输出。

  1. # Converting -f (from) latin1 (ISO-8859-1) 
  2. # -t (to) standard UTF_8 
  3.  
  4. iconv -f ISO-8859-1 -t UTF-8 < input.txt > output.txt 

常用选项:

  • iconv -l 列出所有支持的编码
  • iconv -c 不作提示就丢弃无法转换的字符

HEAD

如果你是重度Pandas的用户,那么你会对head很熟悉。通常在处理新数据时,我们想要做的第一件事就是了解究竟存在那些东西。这会引起Panda启动,读取数据,然后调用df.head() - 很费劲,至少可以说。head,不需要任何标志,将输出文件的前10行。head真正的能力在于彻查清除操作。 例如,如果我们想将文件的分隔符从逗号改变为pipe通配符。一个快速测试将是:head mydata.csv | sed 's/,/|/g'

  1. # Prints out first 10 lines  
  2. head filename.csv  
  3. # Print first 3 lines  
  4. head -n 3 filename.csv 

有用的选项:

  • head -n 输出指定行
  • head -c 输出指定的字节

TR命令

Tr类似于翻译,它是基于文件清理的一个强大使用的工具。一个理想的用法是替换文件中的分隔符。

  1. #将文件中的制表符分割转换成逗号 
  2. cat tab_delimited.txt | tr "t" "," comma_delimited.csv 

Tr的另一个特性是在你的处理中设置上所有的[:class:]变量。包括:

  1. [:alnum:] 所有字母和数字 
  2. [:alpha:] 所有字母 
  3. [:blank:] 所有水平空白 
  4. [:cntrl:] 所有控制字符 
  5. [:digit:] 所有数字 
  6. [:graph:] 所有可打印的字符,不包括空格 
  7. [:lower:] 全部小写字母 
  8. [:print:] 所有可打印的字符,包括空格 
  9. [:punct:] 所有标点符号 
  10. [:space:] 所有的水平或垂直空格 
  11. [:upper:] 全部大写字母 
  12. [:xdigit:] 所有十六进制数字 

可以将这些多样化的变量链接在一起,组成一个强大的程序。下面是一个基于字数统计的程序,用来检查你的README文件是否使用过度。

  1. cat README.md | tr "[:punct:][:space:]" "n" | tr "[:upper:]" "[:lower:]" | grep . | sort | uniq -c | sort -nr 

另外一个例子用于正则表达式

  1. # 将所有的大写字母转换成小写 
  2. cat filename.csv | tr '[A-Z]' '[a-z]' 

有用的选项:

  • tr -d删除字符
  • tr -s压缩字符
  • b退格
  • f换页
  • v垂直选项卡
  • NNN八进制值为NNN的字符

WC

字数统计。它的价值主要体现在使用 -l 参数可以进行行数统计。

  1. # Will return number of lines in CSV  
  2. wc -l gigantic_comma.csv 

个用这个工具来验证各个命令的输出实在方便。因此,如果我们要在文件中转换分隔符,然后运行 wc -l,验证总行数是相同的。如果不同,我们就知道一定是哪里出错了。

常用选项:

  • wc -c 打印字节数
  • wc -m 打印字符数
  • wc -L 打印最长一行的长度
  • wc -w 打印字数

SPLIT命令

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读