![]() 更多精彩,请点击上方蓝字关注我们! ![]() datamash 是什么在官网 中,用了下面一句话来介绍 datamash。
datamash 作为一个命令行程序可以对文本文件进行数字和文本相关的基本统计操作(虽说基本但是所有的操作都足够常用高频)。 使用前首先进行安装,可以通过 sudo apt-get install datamash 来进行安装,但apt库里软件版本有些老旧,仅为1.0.7。或者通过源码来安装最新版本,这里采用第二种方式。 wget https://ftp.gnu.org/gnu/datamash/datamash-1.4.tar.gz 调用格式与参数datamash 的基本调用格式如下: datamash [option]… op1 column1 [op2 column2 …] 上面的内容转换为描述语言就是:在 option 的参数下,对 column1 列进行 op1 操作,对 column2 列进行 op2 操作。如果使用 --group 参数,所有的 operation 都将会分组进行;如果没有使用 --group ,所有的 operation 会对所有的值进行。需要说明的是这里的 column1 可以是表示第几列的数字,当使用 -H 或者 --header-in 时可以是所选字段的名称,可以使用列名,当 operation 要求输入成对数据的时候使用: 连接,比如 spearson 5:6 。主要 operation
Primary operations: primary operations 决定了文件将被如何处理,如果 primary operatino 没有设置,整个文件将会被逐行处理(针对 per-line operation)或者将所有行按照一组进行处理。 ![]() ![]() ![]() 操作示例使用软件自带的测试数据集 scores_h.txt ,有三列,分别是学生姓名科目和成绩。cat /usr/local/share/datamash/examples/scores_h.txt |head 文本基本操作#检查行列完整性 分组统计操作统计每门课的选课人数 $ datamash --header-in --sort groupby 2 count 2 < scores_h.txt 查看每门课程的最高分和最低分,在这里使用 --header-out 输出时会自动添加列名$ datamash --header-in --header-out --sort groupby 2 min 3 max 3 < scores_h.txt 因为这是有列名的输入文件,使用 --header-in 参数后可以使用列名来进行计算。统计每门课程的平局分和标准差,在显示的结果中要求只保留两位小数即可。$ datamash --header-in --header-out --sort -R 2 \ 如果想要对文本中的数字进行简化,可以使用如下几个命令: $ (echo num; seq -1.25 0.25 1.25) \ 在实际的服务器管理中,可能需要统计一些系统用户信息。这些信息存放在 /etc/passwd 中,: 分割。这里使用 login shells 进行分组,然后统计用户数。$ cat /etc/passwd | datamash -t : --output-delimiter $'\t' --sort groupby 7 count 7 ![]() ![]() 碧茂课堂精彩课程推荐: 1.Cloudera数据分析课; 2.Spark和Hadoop开发员培训; 3.大数据机器学习之推荐系统; 4.Python数据分析与机器学习实战; ![]() 详情请关注我们公众号:碧茂大数据-课程产品-碧茂课堂 现在注册互动得海量学币,大量精品课程免费送! ![]() 关注最新行业动态, 加群进行技术交流! ---------------------------------------------------------------------------------------------------------------------- 我们尊重原创,也注重分享,文章来源于微信公众号:碧茂大数据,建议关注公众号查看原文。如若侵权请联系qter@qter.org。 ---------------------------------------------------------------------------------------------------------------------- |