Maison  >  Article  >  développement back-end  >  Quand Pandas crée-t-il une vue ou une copie d'un DataFrame ?

Quand Pandas crée-t-il une vue ou une copie d'un DataFrame ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-04 05:28:02678parcourir

When Does Pandas Create a View vs. a Copy of a DataFrame?

Comprendre les règles de Pandas pour l'affichage et la copie

Lorsque vous traitez des trames de données dans Pandas, il est crucial de comprendre la distinction entre les vues et les copies. Cette distinction détermine si les modifications apportées à un sous-ensemble d'un dataframe affectent le dataframe d'origine.

Règles régissant la vue et la création de copie

  • Copie :

    • Toutes les opérations, à l'exception des indexeurs qui définissent des valeurs, génèrent une copie.
    • Les opérations qui renvoient des copies incluent : les requêtes (.query), les fonctions de manipulation de données ( .fillna, .dropna), et certaines opérations de découpage.
  • Vue :

    • Indexeurs qui définissent des valeurs (_loc , _iloc, _iat, _at) modifiera la trame de données sur place par défaut.
    • Les indexeurs qui obtiennent des objets à typage unique peuvent être des vues ou des copies en fonction de la disposition de la mémoire. Cependant, ce n'est pas un indicateur fiable.

Exceptions et clarifications

  • inplace=True : Certaines opérations offrent une option inplace (par exemple, _inplace=True), qui modifie le dataframe d'origine plutôt que de renvoyer une copie.
  • Objets à typage multiple : Indexeurs sur des objets à typage multiple produire toujours des copies.
  • Indexation chaînée : Opérations d'indexation chaînée (par exemple, _[_df.C <= df.B].loc[:,'B':'E'] _) ne produit pas toujours une vue et doit être évité. Utilisez plutôt une seule opération d'indexation pour spécifier explicitement le sous-ensemble à modifier : _df.loc[_df.C <= df.B, 'B':'E']_.

Exemple d'utilisation

Considérons l'exemple suivant :

<code class="python">df = pd.DataFrame(np.random.randn(8,8), columns=list('ABCDEFGH'), index=range(1,9))
df[df.C <= df.B] = 7654321</code>

Cette opération modifie le dataframe d'origine (_df_) car l'indexeur df[df.C <= df .B] agit comme une vue en raison de son utilisation dans la définition des valeurs.

Conclusion

Comprendre les règles régissant la création d'une vue ou d'une copie dans Pandas est essentiel pour manipulation efficace des trames de données. En suivant les principes décrits ci-dessus, vous pouvez éviter les modifications involontaires des données et garantir l'intégrité des données.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn