Подтвердить что ты не робот

Python или awk/sed для очистки данных

Я использую R для анализа данных, и я очень доволен этим. Однако очистка данных может быть немного проще. Я думаю об изучении другого языка, подходящего для этой задачи. В частности, я ищу инструмент для использования необработанных данных, удаления ненужных переменных или наблюдений и форматирования его для простой загрузки в R. Содержание будет в основном числовыми и строковыми данными, в отличие от многострочного текста.

Я рассматриваю комбинацию awk/sed по сравнению с Python. (Я признаю, что Perl будет другим вариантом, но, если бы я собирался изучить еще один полный язык, Python кажется лучшим и более расширяемым выбором.)

Преимущество sed/awk в том, что его быстрее научить. Недостатком является то, что эта комбинация не такая расширяемая, как Python. В самом деле, я мог бы представить себе некоторую "ползучесть миссии", если бы узнал Python, что было бы хорошо, но не моя цель.

Другим соображением, которое у меня было, являются приложения к большим наборам данных. Насколько я понимаю, awk/sed работают поочередно, в то время как Python обычно выводит все данные в память. Это может быть еще одним преимуществом для sed/awk.

Есть ли другие проблемы, которые мне не хватает? Любой совет, который вы можете предложить, будет оценен по достоинству. (Я включил тег R для пользователей R, чтобы предлагать их рекомендации по очистке.)

4b9b3361

Ответ 1

Не испортить свое приключение, но я бы сказал "нет" и вот почему:

  • R векторизован, где sed/awk не
  • R уже имеет как регулярное выражение Perl, так и расширенные регулярные выражения
  • R может более легко обращаться к статистическим процедурам (скажем, вменению), если вам это нужно
  • R может визуализировать, суммировать,...

и самое главное: вы уже знаете R.

Тем не менее, sed/awk отлично подходят для небольших программ или даже для однострочных, а Python - прекрасный язык. Но я хотел бы также придерживаться R.

Ответ 2

Я регулярно использую Python и Perl. Я знаю очень хорошо, и когда-то сильно использовал awk. Я использовал R в припадках и рывках. Perl - лучшая из связок для функции преобразования данных и скорости.

  • Perl может делать практически все, что может сделать sed и awk, но намного больше. (На самом деле, a2p и s2p, которые поставляются с perl, конвертируют awk и sed скрипты в Perl.)
  • Perl включен в большинство систем Linux/Unix. Когда это было не так, есть веские основания для изучения sed и awk. Эта причина давно мертва.
  • Perl имеет богатый набор модулей, которые обеспечивают гораздо большую мощность, чем можно получить от awk или sed. Например, эти модули позволяют однострочным обратным связям последовательно дополнять последовательности ДНК, вычислять статистику, анализировать CSV файлы или вычислять MD5. (см. http://cpan.org/ для пакетов)
  • Perl по существу такой же короткий, как sed и awk. Для таких людей, как я (и, я подозреваю, вы), быстрое преобразование данных в командной строке является большим благом. Python слишком многословен для эффективного использования командной строки.

Я искренне не понимаю, почему можно было бы узнать sed и awk над Perl.

Для записи я не "парень Perl". Мне нравится это как швейцарский армейский нож, а не как религия.

Ответ 3

Я бы порекомендовал sed/awk вместе с богатством других инструментов командной строки, доступных на платформах UNIX: comm, tr, sort, cut, join, grep и встроенных возможностей оболочки, таких как looping и whatnot. Вам действительно не нужно изучать другой язык программирования, так как R может обрабатывать данные, а также не лучше, чем другие популярные языки сценариев.

Ответ 4

Я бы рекомендовал инвестировать в течение длительного времени с надлежащим языком для обработки файлов данных, таких как python или perl или ruby, а также краткосрочное решение sed/awk. Я думаю, что всем аналитикам данных требуется как минимум три языка; Я использую C для сложных вычислений, perl для обработки файлов данных и R для интерактивного анализа и графики.

Я изучил perl, прежде чем python стал популярным. Я слышал о рубине, поэтому вы можете попробовать это.

Для любого из них вы можете работать с файлами по очереди; python не обязательно должен читать полный файл.

Ответ 5

Я бы порекомендовал awk для этого типа обработки.

Предположительно, вы просто просматриваете или отклоняете недопустимые наблюдения в простых текстовых файлах.

awk молниеносно выполняет эту задачу и очень прост в программировании.

Если вам нужно сделать что-нибудь более сложное, вы можете.

Python - это также возможность, если вы не против удара производительности. Библиотека "rpy" может использоваться для непосредственной интеграции компонентов python и R.

Ответ 6

Я согласен с Дирком. Я думал об одном и том же и немного использовал другие языки. Но в конце я снова удивился тому, что более опытные пользователи делают с R. Пакеты, такие как ddply или plyr, могут быть вам очень интересны. Это говорит о том, что SQL часто помогал мне манипулировать данными