Fluxos de trabalho de “grandes volumes de dados” usando pandas

Eu tentei decifrar uma resposta a essa pergunta por muitos meses enquanto aprendia pandas. Eu uso o SAS para o meu trabalho do dia-a-dia e é ótimo para o suporte fora do núcleo. No entanto, SAS é horrível como um software por inúmeras outras razões.

Um dia, espero substituir meu uso de SAS por python e pandas, mas atualmente não tenho um fluxo de trabalho fora do núcleo para grandes conjuntos de dados. Não estou falando de "big data" que requer uma rede distribuída, mas sim arquivos muito grandes para caber na memória, mas pequenos o suficiente para caber em um disco rígido.

Meu primeiro pensamento é usarHDFStore para armazenar grandes conjuntos de dados no disco e puxar apenas as peças que eu preciso em quadros de dados para análise. Outros mencionaram o MongoDB como uma alternativa mais fácil de usar. Minha pergunta é esta:

Quais são alguns fluxos de trabalho de melhores práticas para realizar o seguinte:

Carregamento de arquivos simples em uma estrutura de banco de dados permanente em discoConsultando esse banco de dados para recuperar dados para alimentar em uma estrutura de dados de pandasAtualizando o banco de dados após manipular peças em pandas

Exemplos do mundo real seriam muito apreciados, especialmente de qualquer pessoa que usa pandas em "grandes dados".

Editar - um exemplo de como eu gostaria que isso funcionasse:

Importe iterativamente um arquivo simples grande e armazene-o em uma estrutura de banco de dados permanente em disco. Esses arquivos geralmente são muito grandes para caber na memória.Para usar o Pandas, gostaria de ler subconjuntos desses dados (geralmente apenas algumas colunas de cada vez) que podem caber na memória.Eu criaria novas colunas executando várias operações nas colunas selecionadas.Eu teria então que acrescentar essas novas colunas na estrutura do banco de dados.

Estou tentando encontrar uma maneira prática de executar essas etapas. Lendo links sobre pandas e pytables, parece que acrescentar uma nova coluna pode ser um problema.

Editar - Respondendo às perguntas de Jeff especificamente:

Eu estou construindo modelos de risco de crédito ao consumidor. Os tipos de dados incluem características de telefone, SSN e endereço; valores de propriedade; informações depreciativas, como registros criminais, falências, etc ... Os conjuntos de dados que eu uso todos os dias têm cerca de 1.000 a 2.000 campos, em média, de tipos mistos de dados: variáveis ​​contínuas, nominais e ordinais de dados numéricos e de caracteres. Eu raramente adiciono linhas, mas executo muitas operações que criam novas colunas.Operações típicas envolvem a combinação de várias colunas usando a lógica condicional em uma nova coluna composta. Por exemplo,if var1 > 2 then newvar = 'A' elif var2 = 4 then newvar = 'B'. O resultado dessas operações é uma nova coluna para cada registro no meu conjunto de dados.Por fim, gostaria de anexar essas novas colunas à estrutura de dados em disco. Eu repetiria o passo 2, explorando os dados com tabelas de referência cruzada e estatísticas descritivas, tentando encontrar relações interessantes e intuitivas para modelar.Um arquivo de projeto típico é geralmente de cerca de 1 GB. Os arquivos são organizados de tal maneira que uma linha consiste em um registro de dados do consumidor. Cada linha tem o mesmo número de colunas para cada registro. Esse sempre será o caso.É muito raro que eu subconjeta por linhas ao criar uma nova coluna. No entanto, é comum que eu crie subconjuntos nas linhas ao criar relatórios ou gerar estatísticas descritivas. Por exemplo, talvez eu queira criar uma frequência simples para uma linha específica de negócios, por exemplo, cartões de crédito de varejo. Para fazer isso, selecionaria apenas os registros em que a linha de negócios = varejo, além das colunas sobre as quais desejo relatar. Ao criar novas colunas, no entanto, eu puxaria todas as linhas de dados e apenas as colunas de que preciso para as operações.O processo de modelagem requer que eu analise cada coluna, procure relações interessantes com alguma variável de resultado e crie novas colunas compostas que descrevam esses relacionamentos. As colunas que eu exploro geralmente são feitas em pequenos conjuntos. Por exemplo, vou me concentrar em um conjunto de 20 colunas que lida apenas com valores de propriedade e observar como elas se relacionam com a inadimplência em um empréstimo. Uma vez que estas são exploradas e novas colunas são criadas, eu então passo para outro grupo de colunas, digamos ensino universitário, e repito o processo. O que estou fazendo é criar variáveis ​​candidatas que expliquem a relação entre meus dados e algum resultado. No final desse processo, aplico algumas técnicas de aprendizado que criam uma equação dessas colunas compostas.

É raro eu adicionar linhas ao conjunto de dados. Eu quase sempre estarei criando novas colunas (variáveis ​​ou recursos em estatística / linguagem de aprendizado de máquina).

questionAnswers(13)

yourAnswerToTheQuestion