Fluxos de trabalho de “grandes dados” usando pandas

| | | | | | | | |

Tentei descobrir uma resposta para essa pergunta por muitos meses enquanto aprendia sobre pandas. Eu uso o SAS para o meu trabalho diário e é ótimo para o suporte fora do núcleo. No entanto, o SAS é horrível como um software por vários outros motivos.

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 arquivos muito grandes para caber na memória, mas pequeno o suficiente para caber em um disco rígido.

Meu primeiro pensamento é usar o HDFStore para armazenar grandes conjuntos de dados em disco e extrair apenas as partes de que 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 práticas recomendadas para realizar o seguinte:

  1. Carregar arquivos simples em uma estrutura de banco de dados permanente em disco
  2. Consultar esse banco de dados para recuperar dados para alimentar uma estrutura de dados de pandas
  3. Atualizar o banco de dados após manipular peças em pandas

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

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

  1. Importar iterativamente um grande arquivo flat- arquivo e armazená-lo em uma estrutura de banco de dados permanente em disco. Esses arquivos geralmente são grandes demais para caber na memória.
  2. Para usar o Pandas, gostaria de ler subconjuntos desses dados (geralmente apenas algumas colunas por vez) que podem caber na memória.
  3. Eu criaria novas colunas realizando várias operações nas colunas selecionadas.
  4. Teria que anexar 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 anexar uma nova coluna pode ser um problema.

Editar -- Respondendo às perguntas de Jeff especificamente:

  1. Estou construindo consumidor modelos de risco de crédito. 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. variáveis contínuas, nominais e ordinais de dados numéricos e de caracteres. Raramente acrescento linhas, mas realizo muitas operações que criam novas colunas.
  2. As operações típicas envolvem a combinação de várias colunas usando lógica condicional em um novo composto 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 em meu conjunto de dados.
  3. Finalmente, gostaria de anexar essas novas colunas à estrutura de dados do disco. d repita a etapa 2, explorando os dados com tabelas cruzadas e estatísticas descritivas tentando encontrar relacionamentos interessantes e intuitivos para modelar.
  4. Um arquivo de projeto típico geralmente tem 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.
  5. É muito raro eu dividir por linhas ao criar uma nova coluna. No entanto, é muito comum eu dividir por linhas ao criar relatórios ou gerar relatórios descritivos Estatisticas. Por exemplo, talvez eu queira criar uma frequência simples para uma linha de negócios específica, digamos, cartões de crédito de varejo. Para fazer isso, eu selecionaria apenas os registros em que a linha de negócios = varejo, além de quaisquer colunas sobre as quais eu desejasse relatar. Ao criar novas colunas, no entanto, eu puxaria todas as linhas de dados e apenas as colunas necessárias para as operações.
  6. O processo de modelagem requer que eu analise cada coluna, procure relacionamentos interessantes com alguma variável de resultado, e crie novas colunas compostas que descrevam esses relacionamentos. As colunas que exploro geralmente são feitas em pequenos conjuntos. Por exemplo, vou me concentrar em um conjunto de, digamos, 20 colunas apenas lidando com valores de propriedade e observar como elas se relacionam com a inadimplência de um empréstimo. Depois que eles são explorados e novas colunas são criadas, passo para outro grupo de colunas, digamos, educação universitária, e repito o processo. O que estou fazendo é criar variáveis candidatas que explicam a relação entre meus dados e algum resultado. No final desse processo, aplico algumas técnicas de aprendizado que criam uma equação a partir dessas colunas compostas.

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

Fluxos de trabalho de "grandes dados" usando pandas __del__: Questions

Fluxos de trabalho de "grandes dados" usando pandas _files: Questions

Shop

Best Python online courses for 2022

$

Best laptop for Fortnite

$

Best laptop for Excel

$

Best laptop for Solidworks

$

Best laptop for Roblox

$

Best computer for crypto mining

$

Best laptop for Sims 4

$

Best laptop for Zoom

$499

Latest questions

NUMPYNUMPY

psycopg2: insert multiple rows with one query

12 answers

NUMPYNUMPY

How to convert Nonetype to int or string?

12 answers

NUMPYNUMPY

How to specify multiple return types using type-hints

12 answers

NUMPYNUMPY

Javascript Error: IPython is not defined in JupyterLab

12 answers

News

Wiki

Python OpenCV | cv2.putText () method

numpy.arctan2 () in Python

Python | os.path.realpath () method

Python OpenCV | cv2.circle () method

Python OpenCV cv2.cvtColor () method

Python - Move item to the end of the list

time.perf_counter () function in Python

Check if one list is a subset of another in Python

Python os.path.join () method