Die Pandas- Bibliothek besteht hauptsächlich aus zwei Datenstrukturen, DataFrames und Series . Diese Datenstrukturen werden intern mit Index-Arrays dargestellt, die die Daten kennzeichnen, und Daten-Arrays, die die tatsächlichen Daten enthalten. Wenn wir nun versuchen, diese Datenstrukturen (DataFrames und Series) zu kopieren, kopieren wir im Wesentlichen die Indizes und Daten des Objekts, und es gibt zwei Möglichkeiten, dies zu tun, nämlich Shallow Copy und Deep Copy.

Diese Operationen werden mit Hilfe der Bibliotheksfunktionen pandas.Series.copy (deep = False) für flache Kopien und pandas.Series.copy (deep = True) für tiefe Kopien in Serien ausgeführt.

Lassen Sie uns nun verstehen, was flaches Kopieren ist.

Flache Kopie

Wenn eine flache Kopie einer Serie oder eines Serienobjekts erstellt wird, werden die Indizes und Daten des Originalobjekts nicht kopiert, sondern lediglich die Verweise auf seine Indizes und Daten. Infolgedessen spiegelt sich eine an einem vorgenommene Änderung in der anderen wider.

Es bezieht sich auf das Erstellen eines neuen Sammlungsobjekts und das anschließende Auffüllen mit Verweisen auf die im Original gefundenen untergeordneten Objekte. Der Kopiervorgang wird nicht wiederholt und erstellt daher keine Kopien der untergeordneten Objekte selbst. 
Beispiel:



  
import pandas as pd 
  
ser = pd.Series(['Mandy', 'Ron', 'Jacob', 'Bayek']) 
  
  
copyser = ser.copy(deep=False) 
  
  
print('\nBefore Operation:\n', copyser == ser) 
  
copyser[2] = 'Geeks'
  
  
print('\nAfter Operation:\n', copyser == ser) 
  
print('\nOriginal Dataframe after operation:\n', ser) 

Ausgabe:

Wie aus der Ausgabe des obigen Programms ersichtlich ist, werden die Änderungen, die auf den flach kopierten Datenrahmen angewendet werden, automatisch auf die Originalserie angewendet.

Tiefe Kopie

Eine tiefe Kopie einer Serie oder eines Serienobjekts verfügt über eine eigene Kopie des Index und der Daten. Es ist ein Prozess, bei dem der Kopiervorgang rekursiv erfolgt. Es bedeutet, zuerst ein neues Sammlungsobjekt zu erstellen und es dann rekursiv mit Kopien der im Original gefundenen untergeordneten Objekte zu füllen. Bei einer tiefen Kopie wird eine Kopie eines Objekts in ein anderes Objekt kopiert. Dies bedeutet, dass Änderungen an einer Kopie des Objekts nicht im Originalobjekt berücksichtigt werden. 

Beispiel:

  
import pandas as pd 
  
ser = pd.Series(['Mandy', 'Ron', 'Jacob', 'Bayek']) 
  
  
copyser = ser.copy(deep=True) 
  
  
print('\nBefore Operation:\n', copyser == ser) 
  
copyser[2] = 'Geeks'
  
  
print('\nAfter Operation:\n', copyser == ser) 
  
print('\nOriginal Dataframe after operation:\n', ser) 

Ausgabe:

Hier werden die Daten in den Originalobjekten nicht rekursiv kopiert. Das heißt, die Daten in den Daten der Originalobjekte zeigen immer noch auf dieselbe Speichereinheit. Wenn die Daten im Serienobjekt beispielsweise veränderbare Daten enthalten, werden sie zwischen ihm und seiner tiefen Kopie geteilt, und jede Änderung an einem wird im anderen widergespiegelt. 

Tabelle des Unterschieds zwischen flacher Kopie V / S Deep Copy

Sr Nr. Flache Kopie Tiefe Kopie
1 Es ist die Kopie der Sammlungsstruktur, nicht die Elemente. Es ist die Kopie der Sammlungen, bei der alle Elemente der ursprünglichen Sammlung dupliziert wurden.
2 Beeinflusst die erste Serie. Beeinflusst nicht die erste Serie.
3 Eine flache Kopie repliziert keine untergeordneten Objekte. Deep Copy repliziert untergeordnete Objekte rekursiv.
4 Das Erstellen einer flachen Kopie ist im Vergleich zu einer tiefen Kopie schnell. Das Erstellen einer tiefen Kopie ist im Vergleich zu einer flachen Kopie langsam.
5 Die Kopie ist vom Original abhängig Die Kopie ist nicht vollständig vom Original abhängig.