Maison >développement back-end >Tutoriel Python >Est-ce que `inplace=True` dans les pandas est nocif ?

Est-ce que `inplace=True` dans les pandas est nocif ?

DDD
DDDoriginal
2024-11-25 09:37:16308parcourir

Is `inplace=True` in pandas Harmful?

Chez les pandas, inplace = True est-il considéré comme nocif, ou non ?

En bref, oui, inplace = True est considéré nocif chez les pandas. Ce problème GitHub propose explicitement de déprécier l'argument inplace à l'échelle de l'API dans un avenir proche. Voici quelques raisons pour lesquelles :

  • De toute façon, des copies sont souvent créées : Contrairement à son nom, inplace = True n'empêche souvent pas la création de copies. Il n’offre (presque) jamais aucun avantage en termes de performances. La plupart des versions sur place et hors place d'une méthode créent indépendamment une copie des données, la version sur place attribuant automatiquement la copie.
  • Entrave au chaînage des méthodes : Inplace = True entrave également le chaînage des méthodes. Comparez le fonctionnement de :
result = df.some_function1().reset_index().some_function2()

Par opposition à :

temp = df.some_function1()
temp.reset_index(inplace=True)
result = temp.some_function2()
  • Pièges involontaires : L'appel sur place = True peut déclencher le SettingWithCopyWarning , ce qui peut provoquer un comportement inattendu :
df = pd.DataFrame({'a': [3, 2, 1], 'b': ['x', 'y', 'z']})

df2 = df[df['a'] > 1]
df2['b'].replace({'x': 'abc'}, inplace=True)
# SettingWithCopyWarning: 
# A value is trying to be set on a copy of a slice from a DataFrame

De plus, il convient de noter que les opérations pandas sont par défaut inplace = False pour une raison. Cela permet une syntaxe chaînée/fonctionnelle (par exemple, df.dropna().rename().sum()), évite les vérifications coûteuses de SettingWithCopy et fournit un comportement cohérent en coulisses.

Par conséquent, il est généralement recommandé de évitez d'utiliser inplace = True sauf si vous en avez un besoin spécifique.

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