"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > FireDucks: Obtenha desempenho além dos pandas com custo zero de aprendizado!

FireDucks: Obtenha desempenho além dos pandas com custo zero de aprendizado!

Publicado em 2024-11-06
Navegar:445

Pandas é uma das bibliotecas mais populares, quando eu procurava uma maneira mais fácil de acelerar seu desempenho, descobri o FireDucks e me interessei por ele!

Comparação com pandas: Por que FireDucks?

Um programa Pandas pode encontrar um sério problema de desempenho dependendo de como foi escrito. No entanto, sendo um cientista de dados, quero gastar cada vez mais tempo analisando dados em vez de melhorar o desempenho do meu código. Então, seria ótimo se pudesse fazer algo como trocar a ordem dos processos e acelerar o desempenho do programa automaticamente. Por exemplo, Processo A =>Processo B será mais lento, então iremos substituí-lo como Processo B =>Processo A. (Claro, o resultado com certeza será o mesmo.) Diz-se que os cientistas de dados gastam cerca de 45% de seu tempo preparando os dados, e quando estava pensando em fazer algo para acelerar o processo, me deparei com um módulo chamado FireDucks.

Na documentação do FireDucks, parece ser compatível apenas com plataformas Linux. Como uso Windows na minha máquina principal, gostaria de experimentá-lo no WSL2 (Windows Subsystem for Linux), um ambiente que pode rodar Linux no Windows.

O ambiente que experimentei é o seguinte.

  • SO Microsoft Windows 11 Pro
  • Versão 10.0.22631 Compilação 22631
  • Modelo de sistema Z690 Pro RS
  • Tipo de sistema baseado em x64
  • Processador para PC Intel(R) Core(TM) i3–12100 de 12ª geração, 3300 MHz, 4 núcleos, 8 processadores lógicos
  • Produto de rodapé Z690 Pro RS
  • Função da plataforma Desktop
  • Memória física instalada (RAM)64,0 GB

Instalando e configurando FireDucks

Instale WSL

WSL foi instalado com a ajuda da seguinte documentação da Microsoft; a distribuição Linux é Ubuntu 22.04.1 LTS.

Instale FireDucks

Em seguida, instale o FireDucks. No entanto, é muito fácil de instalar.
pip instalar fireducks

A instalação do FireDucks levará alguns minutos (junto com pyarrow, pandas e outras bibliotecas).

Tentei executar o código abaixo, a velocidade de carregamento foi tão rápida que o pandas demorou 4 segundos e o fireDucks demorou apenas 74,5 ns.

# 1. analysis based on time period and creative duration
# convert timestamp to date/time object
df['timestamp_converted'] = pd.to_datetime(df['timestamp'], unit='s ')

# define time period 
def get_part_of_day(hour): 
  if 5 



Todo o pré-processamento e análise de dados levou cerca de 8 segundos no pandas, enquanto poderia ser concluído em 4 segundos ao usar o FireDucks. Quase 2 vezes mais rápido pode ser alcançado.

Desempenho aprimorado

Uma das coisas mais estressantes sobre o uso do pandas é esperar ao carregar grandes conjuntos de dados, e então tenho que esperar por operações complexas como groupby. Por outro lado, como o FireDucks faz avaliação lenta, o carregamento em si não leva tempo algum, então o processamento é feito onde é necessário, e achei que foi muito significativo com uma grande redução no tempo total de espera.

Quanto a outros desempenhos, parece que foi alcançado até 16 vezes mais rápido em comparação com os pandas, conforme anunciado oficialmente pela organização. (Vou comparar o desempenho com várias bibliotecas concorrentes na próxima vez.)

FireDucks: Get performance beyond pandas with zero learning cost!

custo zero de aprendizagem

A capacidade de seguir a notação exata do pandas sem ter que pensar em nada é uma grande vantagem. Além do FireDucks, existem outras bibliotecas de aceleração de quadros de dados, mas elas são muito caras para aprender e fáceis de esquecer.

Por exemplo, se você deseja adicionar colunas com polares, você deve escrever algo assim.

# pandas df["new_col"] = df["A"]   1
# polars 
df = df.with_columns((pl.col("A")   1).alias("new_col"))

Quase não há necessidade de alterar um código existente

Tenho vários ETLs e outros projetos que usam pandas, e seria bom ver uma melhoria de desempenho apenas instalando e substituindo a instrução import por FireDucks.

Se você quiser adicionar mais, sinta-se à vontade para comentar abaixo.

Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/codewithved/fireducks-get-performance-beyond-pandas-with-zero-learning-cost-9do?1 Se houver alguma violação, entre em contato com [email protected] para excluí-lo
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3