Assignations chaînées dans Pandas
Lorsque vous travaillez avec des dataframes dans Pandas, les affectations chaînées peuvent conduire à un comportement inattendu ou à des faux positifs, comme l'indique le SettingWithCopyWarning. Cet avertissement vise à alerter les utilisateurs des pièges potentiels liés aux affectations chaînées.
Comment fonctionne l'affectation chaînée
Dans Pandas, la plupart des appels de méthode renvoient une copie de l'objet. Cela signifie que lorsque vous effectuez une affectation chaînée, telle que df['column'] = df['column'].fillna(...), vous modifiez peut-être une copie de la trame de données d'origine plutôt que la trame de données d'origine elle-même.
Effets du chaînage avec .ix(), .iloc() et .loc()
Le choix de ix(), iloc() et loc () peut affecter le comportement des affectations chaînées :
Pratiques de codage optimales
Pour éviter les problèmes potentiels avec affectations chaînées, il est recommandé d'affecter explicitement le résultat de vos opérations à une nouvelle variable. Par exemple, au lieu de :
<code class="python">df['amount'] = df['amount'].fillna(...)</code>
Utilisez :
<code class="python">df['amount_updated'] = df['amount'].fillna(...)</code>
Faux positifs
Certaines affectations enchaînées peuvent déclencher des avertissements même lorsqu'elles le font ne modifie pas la trame de données d'origine. Dans de tels cas, vous pouvez désactiver les avertissements en utilisant :
<code class="python">pd.set_option('chained_assignment', None)</code>
Exemple
Considérez le code suivant :
<code class="python">data['amount'] = data.apply(lambda row: function1(row, date, qty), axis=1) data['amount'] = data['amount'].astype(float)</code>
Ce code peut déclencher un SettingWithCopyWarning car data['amount'] est attribué deux fois. Pour résoudre ce problème, attribuez le résultat de la première opération à une nouvelle variable :
<code class="python">temp_amount = data.apply(lambda row: function1(row, date, qty), axis=1) data['amount'] = temp_amount.astype(float)</code>
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!