Vantagens do dataframe do pandas para o banco de dados relacional regular

13

Na Ciência de Dados, muitos parecem estar usando quadros de dados de pandas como o armazenamento de dados. Quais são os recursos dos pandas que o tornam um armazenamento de dados superior aos bancos de dados relacionais regulares, como o MySQL , que são usados ​​para armazenar dados em muitos outros campos da programação?

Enquanto o pandas fornece algumas funções úteis para a exploração de dados, você não pode usar o SQL e perde recursos como otimização de consulta ou restrição de acesso.

Simon Böhm
fonte
5
pandas não é um armazenamento de dados. Desligue o computador e o quadro de dados não estará lá. os pandas servem para memorizar. O que significa que, se não couber na memória, não funcionará. Mas ele tem um irmão mais velho chamado Spark, então isso não é grande coisa. De fato, o big brother suporta SQL e otimização de consultas. Veja também pandas.pydata.org/pandas-docs/stable/comparison_with_sql.html
Emre

Respostas:

8

Eu acho que a premissa da sua pergunta tem um problema. O Pandas não é um "armazenamento de dados" da maneira que um RDBMS é. Pandas é uma biblioteca Python para manipular dados que cabem na memória. Desvantagens:

  • O Pandas não persiste dados. Ele ainda possui uma função (lenta) chamada TO_SQL que persistirá seu quadro de dados do pandas em uma tabela RDBMS.
  • O Pandas manipulará apenas resultados que cabem na memória, o que é fácil de preencher. Você pode usar o dask para solucionar isso ou trabalhar com os dados no RDBMS (que usa todos os tipos de truques, como espaço temporário) para operar com dados que excedem a RAM.
CalZ
fonte
2

Dos pandas ( Página Principal )

Biblioteca de análise de dados Python¶

O pandas é uma biblioteca de código aberto, licenciada por BSD, que fornece estruturas de dados de alto desempenho e fáceis de usar e ferramentas de análise de dados para a linguagem de programação Python.

Embora os pandas certamente possam acessar dados via SQL ou a partir de vários outros métodos de armazenamento de dados, seu principal objetivo é facilitar o uso do Python na análise de dados.

Para esse fim, o pandas possui vários métodos disponíveis que permitem algumas operações de álgebra relacional que podem ser comparadas ao SQL.

O Pandas também oferece fácil acesso ao NumPy , que

é o pacote fundamental para a computação científica com Python. Ele contém entre outras coisas:

  • um poderoso objeto de matriz N-dimensional
  • funções sofisticadas (transmissão)
  • ferramentas para integrar código C / C ++ e Fortran
  • recursos úteis de álgebra linear, transformação de Fourier e números aleatórios
Stephen Rauch
fonte
2

Além da resposta aceita:

Os bancos de dados relacionais têm um grande número de bytes de sobrecarga por linha (exemplo: esta pergunta ), que é usada para contabilidade, informando nulos de não nulos, garantindo padrões como o ACID . Toda vez que você ler / gravar uma coluna, não apenas os poucos bytes que representam o valor dessa coluna serão lidos, mas também esses bytes da contabilidade serão acessados ​​e possivelmente atualizados.

Por outro lado, os pandas (também R data.table) são mais como um armazenamento de colunas na memória. Uma coluna é apenas uma matriz de valores e você pode usar operações vetorizadas numpy rápidas / apreensões de lista que acessam apenas os valores que você realmente precisa. Apenas isso para tabelas com poucas colunas primitivas torna os bancos de dados relacionais várias vezes mais lentos para muitos casos de uso de ciência de dados.

Valentas
fonte
2

O Pandas é uma ferramenta de armazenamento de dados na memória. Isso permite que você faça cálculos muito rápidos sobre grandes quantidades de dados muito rapidamente.

O SQL (geralmente) armazena dados persistentemente e é um banco de dados. Também é possível executar um banco de dados SQL na memória que pode ser mais rápido do que usar pandas, como o SQLite.

Henry
fonte
0

O SQL permite que você persista e faça muitas transações de relações diferentes e sempre a disponibilize prontamente para vários usos diferentes. Essencialmente, uma fonte de verdade ou lugar para ir. Há sobrecarga, com certeza. No entanto, algumas análises podem ser muito complicadas e requerem uma quantidade significativa de operações baseadas em conjuntos, que podem transformar até mesmo um conjunto pequeno de dados em um grande, muito rapidamente. Eu tive processos de dados que têm mais de 2000 consultas que processam terabytes em menos de 5 minutos e podem pontuar bilhões de registros para um modelo preditivo no final, e python e numpy pontuaram uma fração do conjunto de dados em 10 vezes como armazenamento de dados relacional e servi-lo até uma camada de apresentação.

Um ponto adicional, se você fizer isso na nuvem, verifique se possui uma instância dinâmica que pode dimensionar sua memória. Com o SQL, trata-se de ter disco e computação suficiente para fazê-lo em tempo hábil.

Eu vejo muitas maneiras pelas quais eles podem trabalhar em sinergia. Muitos trabalhos de ciência de dados são o que o Pandas foi projetado para fazer. Alguns trabalhos de ciência de dados são o que os RDBs foram projetados para fazer. Use os dois em equilíbrio.

É tudo sobre a ferramenta certa para fazer o trabalho certo.

William komp
fonte