Las operaciones de Pandas generalmente crean una copia del marco de datos original. Como señalan algunas respuestas en SO , incluso cuando se usa inplace=True , muchas operaciones aún crean una copia para operar.
Ahora, creo que me llamarían loco si les dijera a mis colegas que cada vez que quiero, por ejemplo, aplicar +2 a una lista, copio todo antes de hacerlo. Sin embargo, es lo que hace Pandas. Incluso las operaciones simples como agregar siempre reasignan todo el marco de datos .
Tener que reasignar y copiar todo en cada operación parece una forma muy ineficiente de operar con cualquier dato. También hace imposible operar en marcos de datos particularmente grandes, incluso si caben en su RAM.
Además, esto no parece ser un problema para los desarrolladores o usuarios de Pandas, tanto que hay un problema abierto # 16529 que discute la eliminación del parámetro inplace por completo , que ha recibido respuestas en su mayoría positivas; algunos comenzaron a quedar obsoletos desde 1.0. Parece que me estoy perdiendo algo. Entonces, ¿qué me estoy perdiendo?
¿Cuáles son las ventajas de copiar siempre el marco de datos en las operaciones, en lugar de ejecutarlas en el lugar siempre que sea posible?
Nota: Estoy de acuerdo en que el encadenamiento de métodos es muy bueno, lo uso todo el tiempo. Sin embargo, creo que "porque podemos encadenar métodos" no es la respuesta completa, ya que Pandas a veces copia incluso en métodos inplace=True , que no están destinados a ser encadenados. Entonces, estoy buscando otras respuestas de por qué esto sería un valor predeterminado razonable.
Como se evidencia aquí en la documentación de pandas, "... En general, nos gusta favorecer la inmutabilidad donde sea sensato". El proyecto Pandas está en el campo de preferir objetos inmutables (sin estado) sobre mutables (objetos con estado) para guiar a los programadores en la creación de un código de procesamiento de datos más escalable/paralelizable. Están guiando a los usuarios haciendo que el comportamiento 'inplace=False' sea el predeterminado.
En este intercambio de pila de ingeniería de software, Peter Torok analiza muy bien los pros y los contras entre la programación de objetos mutables e inmutables. https://softwareengineering.stackexchange.com/a/151735
En resumen, algunos ingenieros de software sienten que los objetos que son inmutables (que no cambian) conducen a
Estaré de acuerdo en que esto tiene sus ineficiencias ya que hacer copias constantes de los mismos objetos para cambios menores no parece lo ideal. Tiene otros beneficios mencionados anteriormente.