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!
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.
WSL foi instalado com a ajuda da seguinte documentação da Microsoft; a distribuição Linux é Ubuntu 22.04.1 LTS.
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 5Todo 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.)
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.
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