用于清理数据的Python或awk/sed

Cha*_*lie 26 python awk r sed data-cleaning

我使用R进行数据分析,对此非常满意.但是,清洁数据可能会更容易一些.我正在考虑学习适合这项任务的另一种语言.具体来说,我正在寻找一种工具,用于获取原始数据,删除不必要的变量或观察,并格式化它以便在R中轻松加载.内容主要是数字和字符串数据,而不是多行文本.

我正在考虑awk/sed组合与Python.(我认识到Perl将是另一种选择,但是,如果我要学习另一种完整语言,Python似乎是一种更好,更可扩展的选择.)

sed/awk的优点是学习起来会更快.缺点是这种组合不像Python那样可扩展.事实上,如果我学习Python,我可能会想象一些"任务蔓延",这很好,但不是我的目标.

我的另一个考虑因素是大数据集的应用程序.据我所知,awk/sed逐行操作,而Python通常会将所有数据都拉入内存.这可能是sed/awk的另一个优势.

我还缺少其他问题吗?您可以提供的任何建议将不胜感激.(我为R用户提供了R标签,以提供他们的清洁建议.)

Dir*_*tel 15

不要破坏你的冒险,但我会说不,这就是为什么:

  • R是矢量化的,其中sed/awk不是
  • R已经同时具有Perl正则表达式和扩展正则表达式
  • 如果你需要,R可以更容易地求助于统计程序(比如说,插补)
  • R可以想象,总结,......

最重要的是:你已经知道[R .

也就是说,当然sed/awk非常适合小程序甚至是单行程,Python也是一门优秀的语言.但我会考虑坚持使用R.

  • 我不认为他正在考虑放弃R,而是补充它. (4认同)

Ree*_*ece 10

我经常使用Python和Perl.我知道sed相当不错,曾经使用过很多awk.我已经使用了R in fit和spurts.Perl是数据转换功能和速度方面的佼佼者.

  • Perl基本上可以做sed和awk可以做的所有事情,但也可以做得更多.(事实上​​,与perl一起提供的a2p和s2p将awk和sed脚本转换为Perl.)
  • Perl包含在大多数Linux/Unix系统中.如果不是这样的话,就有充分的理由学习sed和awk.这个理由早就死了.
  • Perl拥有丰富的模块,可以提供比awk或sed更多的功能.例如,这些模块可以使单行反转补充DNA序列,计算统计数据,解析CSV文件或计算MD5.(请参阅http://cpan.org/了解包)
  • Perl基本上像sed和awk一样简洁.对于像我这样的人(我怀疑你),在命令行上快速转换数据是一个很大的好处.Python对于高效的命令行使用太过冗长.

老实说,我不知道为什么人们会学习sed和awk over Perl.

为了记录,我不是"Perl家伙".我喜欢它作为瑞士军刀,而不是宗教.

  • +1来自公平编码背景的比较. (2认同)

Jef*_*eff 6

我会推荐sed/awk以及UNIX类似平台上提供的大量其他命令行工具:comm,tr,sort,cut,join,grep和内置shell功能,如循环和诸如此类的东西.你真的不需要学习另一种编程语言,因为R可以处理数据操作,如果不是比其他流行的脚本语言更好.