Когда я работаю над проектами по анализу данных, я часто храню данные в файлах данных с разделителями-запятыми (CSV, TSV). При этом данные часто принадлежат к выделенной системе управления базами данных. Для многих моих приложений это было бы слишком.
Я могу редактировать файлы CSV и TSV в Excel (или, предположительно, в другой программе электронных таблиц). Это имеет преимущества:
- электронные таблицы облегчают ввод данных
Есть также несколько проблем:
- Работа с файлами CSV и TSV приводит к появлению большого количества предупреждающих сообщений о потере различных функций и о том, как будет сохранен только активный лист, и так далее. Таким образом, это раздражает, если вы просто хотите открыть файл и внести небольшие изменения.
- Это делает много "якобы умных" преобразований. Например, если вы введете 12/3, будет думать, что вы хотите ввести дату. ОБНОВЛЕНИЕ: я должен был упомянуть, что пример даты - только один из многих примеров; кажется, что большинство проблем связано с неправильным обращением. В частности, текстовые поля, которые выглядят как числа или даты, вызывают проблемы.
Кроме того, я мог бы работать непосредственно с текстовым файлом в стандартном текстовом редакторе. Это гарантирует, что я ввожу то, что записано. Однако это очень неудобный способ ввода данных (столбцы не выстраиваются в линию; сложно вводить данные просто в несколько ячеек и т. Д.).
Вопрос
- Какова хорошая стратегия для работы с файлами данных CSV или TSV? то есть, какая стратегия позволяет легко вводить данные и манипулировать ими, а также обеспечивает правильную интерпретацию введенного вами текста?
project-management
Джером англим
источник
источник
Ответы:
Если вы знакомы с R, вы можете создать свой базовый data.frame, а затем использовать для этого функцию fix () для ввода данных. В той же строке, что и # 5, после настройки data.frame вы можете использовать серию readLines (n = 1) (или что угодно), чтобы получить ваши данные, проверить их и предоставить возможность добавить следующую строка. Затем оставьте фиксацию, чтобы исправить (). Смотрите приведенный ниже пример с использованием scan ().
Другой вариант в Excel был бы беспорядочным, но вы могли бы ввести 12/9, а затем иметь другой столбец оценки = IFERROR (MONTH (DateEntryCell) / DAY (DataEntryCell), DataEntryCell). Но тогда вам придется поддерживать лист Excel и лист csv, и все жалобы, когда вы пишете csv, сохранятся.
Обновление: я много возился по этой проблеме, потому что она тоже есть. На данный момент лучшее / простое решение для ввода данных, которое я когда-либо видел, это KillinkCSV . Это не «бесплатное» программное обеспечение, это условно-бесплатная программа с 30-дневной пробной версией и разумной ценой (~ $ 27). Я не уверен, насколько я доверяю ему для редактирования существующих CSV - я передал ему безумно большой (и, вероятно, хорошо отформатированный) CSV, и он не смог прочитать все строки. Однако, похоже, что он хорошо работает для достаточно большого (20 МБ) файла, и проблема с большим файлом может быть из-за ошибки пользователя с моей стороны.
Пример R:
источник
csv-mode.el
установил, благодаряemacs-goodies-el
пакету в Debian / Ubuntu - аккуратно.Обновление: [Проходя через большое количество рассылок по электронной почте от R-Help], мне напомнили о ветке « Поведение
read.csv()
». В этом Дункан Мердок упоминает, что он предпочитает использовать файлы формата обмена данными (DIF) вместо csv по некоторым причинам, о которых упоминает Джером. Я только что попробовал это, и Gnumeric ошибается (загружая 12/3 как дату), но OpenOffice.org читает это правильно и сохраняет информацию 12/3 без изменений. (Кто-нибудь хочет проверить это в MS Excel?)Файлы DIF представляют собой простой текст и могут быть прочитаны электронными таблицами, и R (если вы используете последнюю версию R (версия SVN> = r53778)) будет считывать данные в правильном формате.
оригинал : я бы старался по возможности избегать использования полной остановки электронной таблицы для редактирования / манипулирования данными. Невероятно сложно, если не невозможно, документировать любые изменения, которые вы вносите в существующий набор данных, что в значительной степени исключает его с точки зрения воспроизводимых исследований. В большинстве случаев я использую электронную таблицу для быстрого просмотра существующих данных.
Для обработки данных я, как правило, пишу сценарий R, который будет принимать необработанный CSV-файл и применять все необходимые необходимые этапы обработки. Я тщательно комментирую этот сценарий, чтобы точно объяснить, что я делаю на каждом этапе и почему. Мой сценарий анализа данных будет вызывать сценарий обработки данных, который загружает и обрабатывает данные.
Для ввода данных, это более хлопотно для ввода данных в текстовом редакторе или в электронной таблице? Я подозреваю, что проблемы, о которых вы упомянули для последних, не перевешивают попытки ввода данных CSV в текстовый редактор.
Вы можете попробовать лучшую электронную таблицу; OpenOffice.org отказывается прекратить форматирование 12/3 как даты (или преобразует ее в числовое представление), даже если сначала отформатировать столбец как «числовой». Gnumeric, с другой стороны, оставит 12/3, как и прежде, если вы сначала отформатируете столбец как «числовой».
Вы можете заставить OpenOffice.org не переформатировать 12/3 как дату, добавив a
'
к записям, т.е.'12/3
Е. Будет отображаться в электронной таблице как 12/3 и сохраняться в виде текста. Это, вероятно, довольно безопасно для использования.Не уверен, почему вы хотите, чтобы 12/3 численно сохранялось как 12/3 в текстовом файле - как что-то вроде R должно читать это?
Ваш комментарий о предупреждениях о потере функций или только сохранении активного листа на самом деле не является проблемой, не так ли? (Если они есть, то я хочу твоих проблем в жизни ;-)
источник
Я предлагаю вам взглянуть на Google уточнение (http://code.google.com/p/google-refine/). Я думаю, что это очень хороший инструмент для редактирования файлов CSV
источник
Я бы избегал совместной работы с файлами CSV и TSV. Вместо этого научитесь использовать SQL и работайте только с копией ваших данных datamart или базы данных (БД), или вы можете использовать SAS или R с промежуточным подключением к вашей базе данных. Таким образом, вы можете делать массовые обновления своих данных вместо того, чтобы делать страшные операции поиска и замены в Excel (или любой другой программе для работы с электронными таблицами, которую вы используете) или копировать и вставлять, что может привести к ошибкам. Преимущество использования системы БД также заключается в том, что вы можете включить ведение журнала и быстрый откат внесенных вами изменений, если они были сделаны по ошибке и все изменения могут быть проверены. Кроме того, ограничения целостности могут быть наложены на ваши таблицы БД, чтобы гарантировать, что вы не по ошибке обновите или измените переменные / столбец способами, которые вы считаете неподходящими (например, даты остаются в качестве дат, а другая информация вводится соответствующим образом). Я выиграл'
Если вам нравятся электронные таблицы, потому что они каким-то образом облегчают ввод данных, это можно преодолеть в каждой базе данных, которую я когда-либо использовал, используя инструменты графического интерфейса пользователя / IDE, которые поставляются с базами данных (например, Microsoft Management Studio), или добавив связанную версию вашей базы данных в систему, специально предназначенную для ввода ваших данных и обеспечения ограничений данных (например, формы связанных таблиц в Access или пользовательский веб-интерфейс). Вы также можете использовать другие программы, которые позволят вам получить лучшее из обоих миров и обновить данные в Excel и распространить эти изменения на вашу базу данных (см., Например, https://www.youtube.com/watch?v=5iyuF_mDSac ). ,
источник
После того, как я задал этот вопрос, я начал смотреть на CSVed .
С веб-сайта:
Я не уверен, если у кого-то есть опыт с этим.
источник
Excel не очень дружелюбен к CSV. Например, если вы введете «1 300» в Excel и сохраните его как значение, разделенное запятыми, это позволит вам! Это может быть большой проблемой (я сталкиваюсь с этим регулярно при получении файлов от других).
Я лично использую OpenOffice.org Calc, я также использую многие решения, перечисленные выше, однако многие из них не имеют функциональности и простоты использования, которые требуются для обычного редактирования. OOO Calc намного умнее, чем Excel, хотя, будучи программой для работы с электронными таблицами, вам все равно придется вводить «= 12/3» вместо «12/3», иначе вы будете вводить значение, а не расчет.
Повернись, ты не будешь разочарован.
источник
Мне нравится Gnumeric, потому что он не пытается быть настолько устойчивым к идиотам, как другие (он не кричит о потерянной функциональности) и работает с большими данными ... но я думаю, что это только для Linux.
источник
Просто используйте редактор Рона . Это как Excel без «помощи».
С сайта:
источник
Мне лично нравится использовать идею «реляционной базы данных» для управления файлами CSV. CSV-файлы хороши для обмена данными, но не содержат бизнес-логики. Мой опыт работы с CSV: «Есть много итераций в бизнесе, чтобы уточнить анализ». Работа только с простыми текстовыми файлами (CSV) создаст много проблем. Например, файл CSV не будет показывать «что делает данные уникальными», т. Е. Что такое «первичный ключ каждой строки». Это вызовет большие проблемы позже, когда к нам присоединится другой источник данных.
SQLite - это хороший инструмент для превращения CSV в реляционную базу данных, и, как и CSV, его легко обменивать, и настройка сервера не требуется. Что еще более важно, он очень хорошо поддерживал
R
и другое статистическое программное обеспечение.Моя стратегия всегда поддерживать «очищенные данные» в реляционной базе данных. И держите это ясно на первичном ключе каждой таблицы.
Вот пример того, что может произойти на самом деле (предположим, мы продаем книги):
Теперь вы можете увидеть преимущество чистых данных и хранить их в реляционной базе данных. С использованием идентификатора клиента в качестве первичного ключа и имени книги, автора и издания в качестве первичного ключа. Обновление данных и внесение изменений по мере необходимости очень просто. Также первичный ключ также дает «ограничения» и «проверку работоспособности» для новых поступающих данных.
источник
Если вы используете функцию «Импорт данных» в Excel, вы сможете выбрать тип данных для каждого столбца. Вы можете выбрать все столбцы и использовать тип данных «Текст».
источник