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

数据科学家的呼吁行能力

发布时间:2018-08-16 12:08:13 所属栏目:教程 来源:Tocy, kevinlinkai, 边城, 琪花亿草, 雪
导读:技能沙龙 | 邀您于8月25日与国美/AWS/转转三位专家配合切磋小措施电商拭魅战 对付许大都据科学家来说,数据操纵起始于Pandas或Tidyverse。从理论上看,这个观念没有错。事实,这是为什么这些器材起首存在的缘故起因。然而,对付脱离符转换等简朴使命来说,这些选

全局搜刮正则表达式并输出,或行使grep;大噶?鲱知名的呼吁,而且有很好的来由。 Grep具有很强的手段,出格是在大型代码库中查找要领。在数据科学规模,它充当了其他呼吁的改造机制。但其尺度用法也很有效。

  1. # 递归搜刮并列出当前目次下包括'word'的全部文件 
  2. grep -lr 'word' . 
  3.  
  4. # 列出包括word的文件数量 
  5. grep -lr 'word' . | wc -l 

对包括word/pattern的行数举办计数

  1. grep -c 'some_value' filename.csv  
  2. # 同样的成果,可是凭证文件名列出当前目次下全部包括该要害词的文件  
  3. grep -c 'some_value' * 

Grep行使or运算符- |来检索多个值.

  1. grep "first_value|second_value" filename.csv 

有效的选项

  • alias grep="grep --color=auto" 使grep支持彩色输出
  • grep -E 行使扩展正则表达式
  • grep -w 仅匹配完备单词
  • grep -l 打印匹配文件的名称
  • grep -v 倒序匹配

大杀器

Sed和Awk是本文两个最有效的呼吁。为了简捷,我不会接头那些令人费解的细节。相反,我会接头各类百般的呼吁来证明他们令人印象深刻的气力。假如你想相识的更多,这本书就可以。

SED

在内核中sed是一个流编辑器。它善于替代,可是也可以用来重构。

最根基的sed呼吁包括了s/old/new/g。也就是全局搜刮旧值,替代新值。没有/g 我们的呼吁也许在第一次呈现旧值就会终止。

为了尽快相识它的手段,我们来看一个例子。在这个环境你会拿到下面的文件:

  1. balance,name 
  2. $1,000,john 
  3. $2,000,jack 

我们要做的第一件事就是移除美元符。-i 标识暗示当场修改。''就是代表一个零长度文件扩展,因此重写我们的初始文件。抱负环境下,你会单独测试这些并输出到一个新文件。

  1. sed -i '' 's/$//g' data.txt 
  2.  
  3. # balance,name 
  4. # 1,000,john 
  5. # 2,000,jack 

下一步,我们的balance列的逗号。

  1. sed -i '' 's/([0-9]),([0-9])/12/g' data.txt 
  2.  
  3. # balance,name 
  4. # 1000,john 
  5. # 2000,jack 

最终,Jack有一天起来并筹备告退了。以是,再会吧,我的伴侣。

  1. sed -i '' '/jack/d' data.txt 
  2.  
  3. # balance,name 
  4. # 1000,john 

就像你所看到的,sed成果强盛,可是爱好不止于此。

AWK

最好的放最后。Awk不只是一个简朴的呼吁:它是一个成熟的说话。在本文中包括的每一个呼吁中,awk今朝是最酷的。假如你发明它令你印象深刻,这有大量的资源- 看这,这,和这。

awk包括的常用案例:

  • 文本处理赏罚
  • 名目化文本陈诉
  • 执行计较操纵
  • 执行字符串操纵

Awk在其最初雏形可以与grep平行。

  1. awk '/word/' filename.csv 

可能多行使一点邪术,让grep和cut团结。在这,awk对全部行通过word打印了以tab脱离的第三和第四列。-F,只是将脱离符变为逗号。

  1. awk -F, '/word/ { print $3 "t" $4 }' filename.csv 

Awk具有大量有效的内置变量。譬喻, NF -字段数 - 和NR - 记录数。为了获取文件中这53个记录:

  1. awk -F, 'NR == 53' filename.csv 

添加一个小秘诀可以基于一个值可能多个值过滤。下面的第一个例子,会打印这些记录中第一列为string的行数和列。

  1. awk -F, ' $1 == "string" { print NR, $0 } ' filename.csv  
  2. # Filter based off of numerical value in second column  
  3. awk -F, ' $2 == 1000 { print NR, $0 } ' filename.csv 

(编辑:湖南网)

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

热点阅读