Comparação de desempenho de Pandas apply vs np.vectorize
Foi observado que np.vectorize() pode ser significativamente mais rápido que df. apply() ao criar uma nova coluna com base em colunas existentes em um DataFrame do Pandas. A diferença de desempenho observada decorre dos mecanismos subjacentes empregados por esses dois métodos.
df.apply() vs Python-Level Loops
df.apply() essencialmente cria um loop no nível Python que itera em cada linha do DataFrame. Conforme demonstrado nos benchmarks fornecidos, os loops no nível Python, como compreensão de lista e mapa, são relativamente lentos em comparação com cálculos vetorizados verdadeiros.
np.vectorize() vs df.apply()
np.vectorize() converte uma função definida pelo usuário em uma função universal (ufunc). Ufuncs são altamente otimizados e podem realizar operações elemento a elemento em arrays NumPy, aproveitando código baseado em C e algoritmos otimizados. Isso contrasta com df.apply(), que opera em objetos da série Pandas e incorre em sobrecarga adicional.
Verdadeira vetorização: desempenho ideal
Para criação de colunas verdadeiramente eficiente , cálculos vetorizados dentro do NumPy são altamente recomendados. Operações como numpy.where e divisão direta por elemento com df["A"] / df["B"] são extremamente rápidas e evitam as despesas gerais associadas aos loops.
Numba Optimization
Para uma eficiência ainda maior, é possível otimizar ainda mais os loops usando Numba, um compilador que traduz funções Python em código C otimizado. Numba pode reduzir o tempo de execução para microssegundos, superando significativamente df.apply() e np.vectorize().
Conclusão
Enquanto np.vectorize() pode oferecer alguma melhoria em relação a df.apply(), não é um verdadeiro substituto para cálculos vetorizados em NumPy. Para obter desempenho máximo, utilize a otimização Numba ou operações vetorizadas diretas dentro do NumPy para a criação de novas colunas em Pandas DataFrames.
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