简单快捷的数据处理,数据科学需要注意的命令行

作者:CQITer小编 时间:2018-05-30 09:29

字号
人工智能+区块链的发展趋势及应用调研报告

命令行应该是每个开发者都希望掌握的,尤其是数据科学家。熟悉终端的来龙去脉可以毫无疑问地可以让我们变得更加有效率,因此命令行还是计算机技术中的一个很棒的历史课。例如,awk 这个数据驱动的脚本语言是 1977 年在 Brina Kernighan 的帮助下首次出现的,Brina Kernighan 就是 K&R 这本书中的 K。在 50 年后的今天,每年仍然能够出现与 awk 相关的新书。因此,我们可以相对保守地假设:一项针对命令行才能的投资在任何新近的时间内都不会贬值。

简单快捷的数据处理,数据科学需要注意的命令行

ICONV(用来转换文件的编码方式)

文件编码可能是比较棘手的。现在的多数文件都是 UTF-8 编码,然而有时候我们拿到的文件并不是这个格式的。这可能导致交换编码格式时的一些不靠谱的尝试。这里,iconv 是一个拯救者,它能以一种编码的文本为输入,输出另一种编码的文本。

# Converting -f (from) latin1 (ISO-8859-1) 

# -t (to) standard UTF_8 

iconv -f ISO-8859-1 -t UTF-8 < input.txt > output.txt 

可选参数:

iconv -l 列出所有已知的编码字符集合

iconv -c 忽略不能转换的非法字符,静默地丢弃

HEAD(用于显示文件的开头内容)

如果你是一个频繁使用 Pandas 的用户,那么你会比较熟悉 df.head()。默认情况下 head 命令显示文件的前 10 行内容,当然我们也可以选择不同的参数确定打印的行数或字符数。

# Prints out first 10 lines 

head filename.csv 

# Print first 3 lines 

head -n 3 filename.csv 

可选参数:

head -n <数字> 打印特定数目的行数

head -c <字符数> 打印特定数目的字符

TR(对字符进行替换、压缩和删除)

tr 与转译比较类似,它的强大能力是文件清理的主要工具。例如以下交换文件中的分隔符:

# Converting a tab delimited file into commas 

cat tab_delimited.txt | tr "\\t" "," comma_delimited.csv 

tr 的另一个功能是由我们控制的内置 [:class:] 参数,这些用法包括:

[:alnum:] 所有的字母和数字

[:alpha:] 所有的字母

[:blank:] 所有的水平空格

[:cntrl:] 所有的控制字符(非打印)

[:digit:] 所有的数字

[:graph:] 所有的可打印字符,不包含空格

[:lower:] 所有的小写字母

[:print:] 所有的可打印字符,包含空格

[:punct:] 所有的标点符号

[:space:] 所有的水平或垂直空格

[:upper:] 所有的大写字母

[:xdigit:] 所有的十六进制字符

我们可以将它们连接在一起组成强大的程序。下面是一个基本的字数统计程序,我们可以用它来检查 README 文档。

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

使用基本正则表达式的另一个例子是:

# Converting all upper case letters to lower case 

cat filename.csv | tr '[A-Z]' '[a-z]' 

可选参数:

tr -d 删除字符

tr -s 压缩字符(将连续重复的字符用一个字符表示)

\b 空格

\f 换页符

\v 垂直制表符

\NNN 八进制字符 NNN

WC(用来计数的命令)

它的值主要来自于 -l flag,它会提供文档的行数。

# Will return number of lines in CSV 

wc -l gigantic_comma.csv 

这个工具可以方便地确认各种命令的输出。所以,如果我们转换了文件中的分隔符,那么运行 wc -l 就可以查看总行数是不是相同,不同就是出了问题。

可选参数:

wc -c 打印 Bytes 数目

wc -m 打印出字符数

wc -L 打印出最长行的字符数

wc -w 打印出单词数目

SPLIT(把一个大文件分割成小文件的命令)

文件大小可以使用这个命令大幅度改变。根据任务的不同,分割文件可能会有所帮助,所以就有了 split 命令。split 的基本语法如下:

# We will split our CSV into new_filename every 500 lines 

split -l 500 filename.csv new_filename_ 

# filename.csv 

# ls output 

# new_filename_aaa 

# new_filename_aab 

# new_filename_aac 

责任编辑:CQITer新闻报料:400-888-8888   本站原创,未经授权不得转载
继续阅读
热新闻
推荐
关于我们联系我们免责声明隐私政策 友情链接