Interrogation sur les chained indexing


#1

Bonjour,
Je commence en python et j’ai un petit warning et

J’ai beau essayer de chercher la réponse sans doute mon anglais n’est pas assez bon mais je ne comprends pas pourquoi j’ai ce soucis ,

Voici un extrait de code (simplifié pour exposé juste le problème)

import pandas as pd
import sklearn as sk
import os
from sklearn.metrics import accuracy_score
from sklearn.tree import export_graphviz

#import des fichiers
test_o = pd.read_csv("C:/Users/test.csv")

test_r=test_o
test_r= pd.get_dummies(test_r,columns=['Sex','Pclass','Embarked','SibSp','Parch'])

features = ['Fare','Sex_male','Sex_female']
X=test_r[features]
test_tr = test_r[features]
test_tr['Fare'].fillna(value=-1,inplace=True)

j’ai l’erreur suivante:

SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame
See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
self._update_inplace(new_data)

(oui j’ai essayé de comprendre la doc)
j’ai constaté qu’en modifiant le code comme suit, je n’ai plus d’erreur

test_tr = test_r[features]
#je tranforme la ligne du dessus en celle de dessous
test_tr = test_r[features].copy()
  • Pourquoi ai-je ce warning?
  • Quel est la bonne facon de faire pour affecter une valeur a tout les na d’une colonne une valeur?
  • Si vous voyez des aberrations dans mon code ou des bonnes pratiques que je ne n’applique pas … je suis preneur, j’ai certes plusieurs années de dev mais le python c’est assez nouveau pour moi