Pregunta ¿Por qué debería hacer una copia de un marco de datos en pandas?


Al seleccionar un marco de datos secundario de un marco de datos principal, noté que algunos programadores hacen una copia del marco de datos usando el .copy() método.

¿Por qué están haciendo una copia del marco de datos? ¿Qué pasará si no hago una copia?


76
2017-12-28 02:22


origen


Respuestas:


Esto se expande en la respuesta de Pablo. En Pandas, la indexación de un DataFrame devuelve una referencia al DataFrame inicial. Por lo tanto, cambiar el subconjunto cambiará el DataFrame inicial. Por lo tanto, querrá utilizar la copia si quiere asegurarse de que el DataFrame inicial no cambie. Considera el siguiente código:

df = DataFrame({'x': [1,2]})
df_sub = df[0:1]
df_sub.x = -1
print(df)

Obtendrás:

x
0 -1
1  2

Por el contrario, las siguientes hojas df sin cambios:

df_sub_copy = df[0:1].copy()
df_sub_copy.x = -1

86
2017-12-28 20:01



Porque si no hace una copia, los índices pueden manipularse en otro lugar, incluso si asigna el DataFrame a un nombre diferente.

Por ejemplo:

df2 = df
func1(df2)
func2(df)

func1 puede modificar df modificando df2, para evitar eso:

df2 = df.copy()
func1(df2)
func2(df)

25
2017-09-22 01:27



Es necesario mencionar que la devolución de copia o vista depende del tipo de indexación.

La documentación de los pandas dice:

Devolver una vista versus una copia

Las reglas sobre cuándo se devuelve una vista de los datos son completamente   depende de NumPy. Siempre que una matriz de etiquetas o un vector booleano   están involucrados en la operación de indexación, el resultado será una copia.   Con indexación y división de etiquetas / escalas únicas, p. df.ix [3: 6] o   df.ix [:, 'A'], se devolverá una vista.


8
2018-01-20 13:22



En general, es más seguro trabajar en copias que en marcos de datos originales, excepto cuando sabe que ya no necesitará el original y desea continuar con la versión manipulada. Normalmente, todavía podría ser útil para comparar el marco de datos original con la versión manipulada, etc. Por lo tanto, la mayoría de las personas trabajan en copias y se fusionan al final.


1
2018-03-28 23:31