Quando trabalho em projetos de análise de dados, costumo armazenar dados em arquivos de dados separados por vírgula ou tabulação (CSV, TSV). Enquanto os dados geralmente pertencem a um sistema de gerenciamento de banco de dados dedicado. Para muitos dos meus aplicativos, isso seria exagero.
Posso editar arquivos CSV e TSV no Excel (ou presumivelmente outro programa de planilha). Isso tem benefícios:
- planilhas facilitam a inserção de dados
Existem também vários problemas:
- Trabalhar com arquivos CSV e TSV leva a uma ampla gama de mensagens de aviso sobre a perda de vários recursos e como somente a planilha ativa será salva e assim por diante. Portanto, é irritante se você apenas deseja abrir o arquivo e fazer uma pequena alteração.
- Faz muitas conversões "supostamente inteligentes". Por exemplo, se você digitar 12/3, ele pensará que deseja inserir uma data. UPDATE: Eu deveria ter mencionado que o exemplo de data é apenas um dos muitos exemplos; a maioria dos problemas parece estar relacionada à conversão inadequada. Em particular, os campos de texto que parecem números ou datas causam problemas.
Como alternativa, eu poderia trabalhar diretamente com o arquivo de texto em um editor de texto padrão. Isso garante que o que eu entro é o que é gravado. No entanto, é uma maneira muito incômoda de inserir dados (as colunas não se alinham; é difícil inserir dados simplesmente em várias células; etc.).
Questão
- Qual é uma boa estratégia para trabalhar com arquivos de dados CSV ou TSV? ou seja, qual estratégia facilita a inserção e manipulação dos dados, além de garantir que o que você digita seja realmente interpretado corretamente?
project-management
Jeromy Anglim
fonte
fonte
Respostas:
Se você se sentir confortável com o R, poderá criar seu data.frame básico e, em seguida, usar a função fix () para inserir dados. Na mesma linha que o 5, depois de configurar o data.frame, você pode usar uma série de readLines (n = 1) (ou o que seja) para obter seus dados, validá-los e oferecer a oportunidade de adicionar o próximo linha. Em seguida, deixe a fixação em fix (). Veja um exemplo implementado abaixo usando scan ().
Outra opção no Excel seria uma bagunça, mas você pode digitar 12/9 e, em seguida, outra coluna avaliar = IFERROR (MÊS (DateEntryCell) / DIA (DataEntryCell), DataEntryCell). Mas então você terá que manter a planilha do excel E a planilha csv e todas as queixas à medida que escreve o csv persistirá.
Atualização: eu estive bisbilhotando muito esse problema, porque também é um problema. Até agora, a melhor / mais fácil solução para entrada de dados que vi até agora é o KillinkCSV . Não é um software "gratuito", é um shareware com uma duração de avaliação de 30 dias e um preço razoável (~ US $ 27). No entanto, não sei quanto confio para editar os CSVs existentes - entreguei a ele um CSV incrivelmente grande (e presumivelmente bem formatado) e ele falhou ao ler todas as linhas. No entanto, parecia funcionar bem para um que era razoavelmente grande (20 MB) e o problema com o arquivo maior pode ser um erro do usuário da minha parte.
R Exemplo:
fonte
csv-mode.el
instalei graças aoemacs-goodies-el
pacote no Debian / Ubuntu - puro.Atualização: [Depois de analisar um grande estoque de emails da R-Help], lembro-me do tópico " O comportamento de
read.csv()
". Nisso, Duncan Murdoch menciona que prefere usar arquivos DIF (Data Interchange Format) em vez de csv por alguma das razões pelas quais Jeromy menciona. Eu apenas tentei isso e o Gnumeric está errado (carregando 12/3 como uma data), mas o OpenOffice.org lê isso corretamente e preserva as informações 12/3 intactas. (Alguém quer verificar isso no MS Excel?)Os arquivos DIF são texto simples e podem ser lidos por planilhas e R (desde que você use uma revisão R recente (revisão SVN> = r53778)) lerá os dados no formato correto.
Original : eu tentaria evitar o uso de uma parada completa da planilha para edição / manipulação de dados sempre que possível. É incrivelmente difícil, se não impossível, documentar as alterações feitas em um conjunto de dados existente, de modo que praticamente o exclua do ponto de vista reprodutível da pesquisa. No máximo, uso uma planilha para visualizar rapidamente os dados existentes.
Para o processamento de dados, costumo escrever um script R que pegue o arquivo csv bruto e aplique todas as etapas de processamento necessárias. Eu comento fortemente esse script para explicar exatamente o que estou fazendo em cada estágio e por quê. Meu script de análise de dados chamaria o script de processamento de dados que carrega e processa os dados.
Para entrada de dados, é mais difícil inserir os dados em um editor de texto ou em uma planilha? Eu suspeito que os problemas que você mencionou para os últimos não superam os de tentar inserir dados CSV em um editor de texto.
Você pode tentar uma planilha melhor; O OpenOffice.org se recusa a interromper a formatação de 12/3 como uma data (ou a converte na representação numérica), mesmo que se formate a coluna como "numérico" primeiro. O Gnumeric, por outro lado, deixará 12/3 como é se você formatar a coluna como "numérica" primeiro.
Você pode forçar o OpenOffice.org a não reformatar 12/3 como uma data, acrescentando
'
a às entradas, ou seja,'12/3
será exibido como 12/3 na planilha e salvo como texto. Provavelmente é bastante seguro de usar.Não sabe por que você quer que o 12/3 seja armazenado numericamente como 12/3 no arquivo de texto - como algo como R deve ler isso?
Seu comentário sobre avisos sobre a perda de recursos ou o salvamento apenas da planilha ativa não são realmente problemas, são? (Se eles são, então eu quero seus problemas na minha vida ;-)
fonte
Sugiro que você veja o google refine (http://code.google.com/p/google-refine/). Eu acho que é uma ferramenta muito boa para editar arquivos CSV
fonte
Eu evitaria trabalhar com os arquivos CSV e TSV todos juntos. Em vez disso, aprenda a usar SQL e opere apenas em uma cópia de dados ou banco de dados (DB) dos seus dados ou use SAS ou R com uma conexão intermediária ao banco de dados. Dessa forma, você pode fazer atualizações em massa de seus dados em vez de encontrar e substituir o temido no Excel (ou qualquer outro programa de planilha que esteja usando) ou copiar e colar, o que pode estar sujeito a erros. A vantagem de usar um sistema de banco de dados também é que você pode habilitar o log e reverter rapidamente as alterações feitas, se forem feitas com erro e todas as alterações puderem ser auditadas. Além disso, restrições de integridade podem ser colocadas em suas tabelas de banco de dados para garantir que você não atualize ou altere erroneamente variáveis / colunas da maneira que considerar inadequada (por exemplo, datas permanecem como datas e outras informações são do tipo apropriado). Eu venci'
Se você gosta de planilhas porque, de alguma forma, facilita sua entrada de dados, isso pode ser superado em todos os bancos de dados que já usei usando as ferramentas de interface gráfica do usuário / IDEs que acompanham os bancos de dados (por exemplo, Microsoft's Management Studio) ou puxando uma versão vinculada do seu banco de dados em um sistema projetado especificamente para inserir seus dados e impor restrições de dados (por exemplo, formulários de tabelas vinculadas no Access ou uma interface da web personalizada). Você também pode usar outros programas que permitirão obter o melhor dos dois mundos e atualizar dados no Excel e fazer com que essas alterações sejam propagadas para o seu banco de dados (consulte https://www.youtube.com/watch?v=5iyuF_mDSac, por exemplo) .
fonte
Depois que fiz essa pergunta, comecei a dar uma olhada no CSVed .
A partir do site:
Não tenho certeza se alguém tem experiência com isso.
fonte
O Excel não é muito compatível com CSV. Por exemplo, se você digitar "1.300" no Excel e salvá-lo como um valor separado por vírgula, isso permitiria! Isso pode ser um grande problema (eu o encontro regularmente ao receber arquivos de outras pessoas).
Eu pessoalmente uso o OpenOffice.org Calc, também uso muitas das soluções listadas acima, mas muitas delas não possuem a funcionalidade e a facilidade de uso necessárias para a edição regular. O OOO Calc é muito mais inteligente que o Excel, embora seja um programa de planilha, você ainda precisará inserir "= 12/3" em vez de "12/3", caso contrário, você estará inserindo um valor, e não um cálculo.
Dê um giro, você não ficará desapontado.
fonte
Eu gosto do Gnumeric porque ele não tenta ser tão resistente a idiotas quanto outros (não grita sobre perda de funcionalidade) e funciona com grandes dados ... mas acho que é apenas para Linux.
fonte
Basta usar o Editor do Ron . É como o Excel sem a 'ajuda'.
Do site:
fonte
Pessoalmente, gosto de usar a idéia de "banco de dados relacional" para gerenciar arquivos CSV. Os arquivos CSV são bons para troca de dados, mas não contêm lógica comercial. Minha experiência de trabalhar com CSV é "existem muitas iterações com os negócios para refinar a análise". Trabalhar apenas com arquivos de texto sem formatação (CSV) apresentará muitos desafios. Por exemplo, o arquivo CSV não mostrará "o que torna os dados exclusivos", ou seja, qual é a "chave primária de cada linha". Isso causará grandes problemas mais tarde, quando tivermos outra fonte de dados para ingressar.
O SQLite é uma boa ferramenta para transformar CSV em banco de dados relacional e, semelhante ao CSV, é fácil de trocar e não é necessária nenhuma configuração de servidor. Mais importante, ele suportava muito bem o
R
software estatístico e outros.Minha estratégia é sempre manter "dados limpos" no banco de dados relacional. E mantenha-o claro na chave primária de cada tabela.
Aqui está um exemplo do que pode acontecer em palavras reais (suponha que estamos vendendo livros):
Agora, você pode ver a vantagem dos dados limpos e mantê-los no banco de dados relacional. Com a palavra-chave ID do cliente como chave primária e nome do livro, autor e edição como chave primária. É muito fácil fazer atualizações de dados e incorporar alterações conforme necessário. Além disso, a chave primária também fornece "restrições" e "verificação de integridade" para novos dados futuros.
fonte
Se você usar o recurso "Importar dados" do Excel, você terá a opção de selecionar o tipo de dados para cada coluna. Você pode selecionar todas as colunas e usar o tipo de dados "Texto".
fonte