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

Quand Pandas crée-t-il une vue ou une copie ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-04 05:02:01692parcourir

When Does Pandas Create a View vs a Copy?

Règles Pandas pour la génération de vues ou de copies

Pandas utilise des règles spécifiques pour décider si une opération de tranche sur un DataFrame aboutit à une vue ou à un copie. En comprenant ces règles, vous pouvez optimiser la manipulation de vos données et éviter des comportements inattendus.

En commençant par les opérations qui génèrent toujours des copies :

  1. Toutes les opérations, à l'exception de celles spécifiquement conçues pour modifier le DataFrame sur place, créez des copies.
  2. Seules certaines opérations prennent en charge le paramètre inplace=True, qui permet aux modifications de se produire directement dans le DataFrame d'origine.

Ensuite, considérons les opérations cela peut entraîner des vues :

  1. Un indexeur qui définit des valeurs, telles que .loc, .iloc, .iat et .at, fonctionne sur place, modifiant le DataFrame d'origine sans créer de copie.
  2. Un indexeur qui récupère les données d'un objet à type unique crée généralement une vue, à moins que la disposition de la mémoire sous-jacente n'empêche cette optimisation.
  3. À l'inverse, un indexeur qui récupère les données d'un objet à types multiples crée toujours une copie.

Concernant vos exemples :

  • df.query('2 < index <= 5') renvoie une copie car elle implique un nombre numérique évaluation de l'expression.
  • df.iloc[3] = 70 et df.ix[1, 'B':'E'] = 222 changent df car ils accèdent à des objets de type unique et définissent des valeurs sur place.
  • df[df.C <= df.B] modifie df car il utilise un setter sur place (df[...]) sur un objet de type unique (le masque booléen résultant).
  • Cependant, df[df.C <= df.B].ix[:,'B':'E'] ne modifie pas df car elle implique une opération d'indexation chaînée, dont il n'est pas garanti qu'elle soit intercepté par Pandas.

Pour modifier des valeurs spécifiques en fonction d'une requête, utilisez la syntaxe loc correcte :

df.loc[df.C <= df.B, 'B':'E']

En adhérant à ces règles, vous pouvez acquérir une compréhension claire de lorsque Pandas génère des vues ou des copies, garantissant une manipulation efficace des données dans vos scripts Python.

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