Standardisation des données qui provoque des NAN

Bonjour,

Je dispose d’une base de données de 1640 ligne de 35 colles contenant des données objets et float. Je dois centrer réduire les données numérique et transformer chaque variable catégorielle en variables indicatrices.
Pour ce faire, je scinde les données en deux bases, numériques et objet.
Puis, j’applique une standardisation avec fit puis transform sur les valeurs numériques, sauf que durant cette opération de perd une ligne, laquelle ne remonte que des Nan.
Pour les variables indicatrices de procède par un get_dummies, cette base conserve l’intégralité de ses lignes, avant de la joindre à base contenant les valeurs numériques standardisées.
Sauf que comme j’ai des Nan sur la dernière ligne des colonnes numériques,

J’ai tenté ceci :

scaler = preprocessing.StandardScaler().fit(num_df)

num_df[num_df.columns] = pd.DataFrame(scaler.transform(num_df))

Perte de la dernière ligne par la présence de Nan

image

obj_df = pd.get_dummies(obj_hp)

X_train, X_test, y_train, y_test = train_test_split(data, target, test_size=0.2)

A ce stade pas de message d’erreur.

A l’étape ridge.fit(X_train, y_train), le message suivant apparaît :

Auriez-vous une explication sur le fait qu’il y ait des Nan sur la dernière ligne des données numériques lors de l’opération de transformation et comment le résoudre car cela est bloquant pour l’application du modèle de régression.

Je vous remercie pour votre attention.

Cordialement,

SB

Bonjour Sandrine,

Je ne connais pas votre base de données mais il semblerait qu’elle contient initialement des valeurs NaN avant la transformation des données.

Bonjour,

Oui dans la base initiale mais je les supprime tous avant de scinder celle-ci en bases une num et une objet. A l’issue de laquelle, j’ai 0 valeur nulle avec 1460 lignes pour les deux nouvelles bases.

A l’opération de fit(num_df), j’ai bien mes 1460 lignes non nulles, mais à l’opération transform la 1460ème ligne contient désormais des Nan, ce qui me bloque ensuite, :frowning:

Avez-vous des capture d’écran du code utilisé pour le nettoyage des données ? Je n’ai pas de vue sur le code pour vous aider.

Merci, alors il est plutôt simple :slight_smile:

  1. df = df.fillna(df.mean(axis=1).round()) # le round c’était en raison du message d’erreur avant de voir que j’avais la ligne de Nan
  2. df.dropna(axis=1, inplace = True)
  3. df.dropna(inplace = True) # au cas ou !

1460 lignes non nulle

image

Entre les deux print(num_df.info()), je perds une ligne
qui se transforme en Nan.
J’ai fait le test après le fit également et pas de problème

Il s’agit d’un dataset que vous avez trouvé en ligne ?
Histoire que je puisse le tester en local sur mon ordinateur.