<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Les ensembles de données parfaits sont rares. Plus encore s'ils sont saisis manuellement!Heureusement, JMP propose des outils de nettoyage des données pour aider à nettoyer nos dégâts. Les exemples ci-dessous illustrent certaines méthodes (mais certainement pas toutes!) De recherche et de correction de deux erreurs courantes de saisie manuelle.
Commençons par configurer un ensemble de données rapide avec lequel travailler. Vous devrez copier le script ci-dessous dans une nouvelle fenêtre de script et cliquer sur l'icône d'exécution du script.Imaginez que ces données soient des mesures magnétiques saisies manuellement de l'épaisseur du revêtement (mm) à partir de 10 emplacements définis le long de 10 barres d'acier revêtues de poudre. L'épaisseur est toujours inférieure à 1 en raison des contrôles de processus.Il est possible d'avoir des taches nues non revêtues d'épaisseur 0.
// Mettre en place une matrice et un tableau de données pour l'exercice d'entretien des données
Noms par défaut ici ( 1 ) ;
// Charger une matrice aléatoire avec des erreurs de collecte de données simulées
rndMat = [
0,35 830 0,71 0,91 0,74 . 0,71 0,92 0,96 0,28 ,
0,50 0,93 0,48 0,13 0,70 0,04 0,25 . 0,99 0,98 ,
0,26 0,19 750 0,22 0,97 0,35 0,30 0,25 0,64 . ,
0,19 0,19 0,53 0,31 0,58 0,65 0,64 0,53 0,02 0,35 ,
640 0,27 0,48 0,63 0,70 0,26 0,83 0,78 0,12 0,30 ,
0,54 0,38 0,47 . 0,89 0,71 0,91 . 0,74 0,16 ,
0,38 0,09 0,18 0,87 0,38 0,45 0,97 0,13 0,08 0,03 ,
0,75 0,17 0,33 580 0,88 0,63 0,14 0,18 0,40 0,79 ,
0,59 0,48 0,19 0,71 0,70 0,01 . 0,52 0,01 0,41 ,
0,44 0,07 0,87 0,34 0,05 0,64 0,11 1,00 0,70 0,91
] ;
// Créer une table de données à partir d'une matrice aléatoire
dtNouveau = Comme tableau ( rndMat ) ;
Cherchons maintenant les erreurs en traçant et en résumant nos données. Je me concentre sur le nettoyage des données dans cet exemple, mais dans la vie réelle, je gagne également une compréhension de base de mes données. N'oubliez pas, avant toute analyse PDD (tracez le mannequin de données) !!

La plateforme de distribution est un excellent outil pour voir les anomalies dans les données. Notez qu'il y a des entrées 1000 fois plus grandes que prévu dans notre ensemble de données. Je rencontre personnellement des données où les inspecteurs / opérateurs manquent la décimale ou choisissent même d'omettre toutes les décimales pour être plus rapide! C'est une bonne idée de vérifier les erreurs comme celle-ci avec les opérateurs avant d'apporter des modifications.
La visionneuse de colonnes est un outil de résumé rapide et facile. L'image ci-dessous montre un tableau récapitulatif pour toutes les colonnes. Notez qu'il y a 10 valeurs manquantes dans nos données. Les valeurs manquantes où les zéros devraient être sont une erreur de saisie manuelle très courante, encore plus courante que les décimales mal placées ou supprimées dans mon expérience. Cela peut sembler anodin avec notre petit tableau où nous pouvons facilement voir toutes les valeurs manquantes. Mais imaginez la difficulté si notre ensemble de données contient des milliers, voire des millions de lignes de données! Les meules de foin et les aiguilles viennent à l'esprit.
Les statistiques récapitulatives peuvent être utilisées de la même manière que nous avons utilisé la plateforme de distribution ci-dessus. Remarquez que les valeurs maximales pour col1-col4 sont 100 fois plus élevées que prévu, comme nous l'avons appris dans la distribution.

Notre analyse exploratoire a identifié 2 types d'erreurs dans nos données. Décimales manquantes et valeurs manquantes qui doivent être des zéros.Maintenant, réparons-les!Dans une petite table comme la nôtre, il est assez facile d'apporter les modifications nécessaires manuellement dans la table de données. Nous allons supposer que ce n'est pas le cas et que des méthodes plus efficaces sont nécessaires.
L'utilitaire de recodage dans JMP fournit une option pilotée par menu pour modifier les valeurs dans une table de données. Les colonnes doivent être sélectionnées pour accéder à l'utilitaire. Nos deux erreurs peuvent être corrigées lors du recodage.


Imaginez maintenant que notre ensemble de données comporte 10 000 lignes et 100 colonnes. Du coup, recoder n'est pas aussi attrayant. Heureusement pour nous, JSL (langage de script JMP) peut être utilisé pour résoudre notre problème rapidement et efficacement!
Commençons par rechercher et corriger toutes nos données avec des décimales manquantes. Il est facile d'imaginer l'automatisation d'une routine manuelle de recherche et de réparation avec des boucles. Comme vous le verrez, cela fait le travail.
Pour garder cet exercice simple et clair, fermez la table de données et la fenêtre de script. Collez le script ci-dessous dans une nouvelle fenêtre de script et exécutez le script.
Noms par défaut ici ( 1 ) ;
// Charger une matrice aléatoire avec des erreurs de collecte de données simulées
rndMat = [
0,35 830 0,71 0,91 0,74 . 0,71 0,92 0,96 0,28 ,
0,50 0,93 0,48 0,13 0,70 0,04 0,25 . 0,99 0,98 ,
0,26 0,19 750 0,22 0,97 0,35 0,30 0,25 0,64 . ,
0,19 0,19 0,53 0,31 0,58 0,65 0,64 0,53 0,02 0,35 ,
640 0,27 0,48 0,63 0,70 0,26 0,83 0,78 0,12 0,30 ,
0,54 0,38 0,47 . 0,89 0,71 0,91 . 0,74 0,16 ,
0,38 0,09 0,18 0,87 0,38 0,45 0,97 0,13 0,08 0,03 ,
0,75 0,17 0,33 580 0,88 0,63 0,14 0,18 0,40 0,79 ,
0,59 0,48 0,19 0,71 0,70 0,01 . 0,52 0,01 0,41 ,
0,44 0,07 0,87 0,34 0,05 0,64 0,11 1,00 0,70 0,91
] ;
// Créer une table de données à partir d'une matrice aléatoire
dtNouveau = Comme tableau ( rndMat ) ;
myCols = N Cols ( dtNouveau ) ;
Pour ( q = 1 , q <= myCols , q ++,
col = Colonne ( q ) ;
Pour chaque ligne ( col [] =
Si (
col [] > 100 , col [] / 1000 , col []
) ;
Si (
Est manquant ( col []) == 1 , col [] = 0 , col []
) ;
) ;
) ;
Les décimales supprimées et les zéros manquants sont désormais corrigés!Cette méthode est légitime mais longue et peut être lente avec des ensembles de données plus volumineux.À mon avis, l'indexation logique est une meilleure façon de procéder. En JSL, l'indexation logique est effectuée à l'aide de la fonction Loc (). Ce sera un peu plus facile à montrer qu'à dire.
Fermez la table et la fenêtre de script (enregistrez si vous le souhaitez).Collez le script suivant dans une nouvelle fenêtre de script. Cliquez sur exécuter le script.
Noms par défaut ici ( 1 ) ;
// Charger une matrice aléatoire avec des erreurs de collecte de données simulées
rndMat = [
0,35 830 0,71 0,91 0,74 . 0,71 0,92 0,96 0,28 ,
0,50 0,93 0,48 0,13 0,70 0,04 0,25 . 0,99 0,98 ,
0,26 0,19 750 0,22 0,97 0,35 0,30 0,25 0,64 . ,
0,19 0,19 0,53 0,31 0,58 0,65 0,64 0,53 0,02 0,35 ,
640 0,27 0,48 0,63 0,70 0,26 0,83 0,78 0,12 0,30 ,
0,54 0,38 0,47 . 0,89 0,71 0,91 . 0,74 0,16 ,
0,38 0,09 0,18 0,87 0,38 0,45 0,97 0,13 0,08 0,03 ,
0,75 0,17 0,33 580 0,88 0,63 0,14 0,18 0,40 0,79 ,
0,59 0,48 0,19 0,71 0,70 0,01 . 0,52 0,01 0,41 ,
0,44 0,07 0,87 0,34 0,05 0,64 0,11 1,00 0,70 0,91
] ;
// Trouver l'emplacement des erreurs et remplacer par des valeurs correctes
rndMat [ Loc ( rndMat > 100 )] = rndMat [ Loc ( rndMat > 100 )] : / 1000 ;
rndMat [ Loc ( Est manquant ( rndMat ))] = 0 ;
dtNouveau = Comme tableau ( rndMat ) ;
Jetez un œil aux résultats! Nous avons corrigé les zéros décimaux manquants et manquants avec 2 lignes de code et aucune boucle! Notez que pour éviter les boucles, j'ai généré une nouvelle table de données avec des valeurs correctes.Si vous souhaitez conserver une table existante, une boucle est nécessaire pour affecter des valeurs à chaque colonne de la table de données.Je vous laisserai tous expérimenter cela par vous-même.

C'est ce qui s'est passé.Loc (rndMat> 100) est une matrice d'indices dans rndMat où les valeurs sont supérieures à 100. rndMat [ Loc ( rndMat > 100 )] = rndMat [ Loc ( rndMat > 100 )] : / 1000 remplace les valeurs de ces indices par la valeur actuelle divisée par 1000. Le remplacement des valeurs manquantes est plus simple car nous remplaçons simplement les valeurs manquantes par zéro.
Vous trouverez plus d'informations sur la fonction Loc () dans le chapitre 7 du guide de script. Le guide de création de scripts se trouve sous Help_Books.L'indexation logique a une utilité au-delà du nettoyage des données et mérite d'être étudiée si elle est nouvelle pour vous.
J'espère que cet exercice vous aidera tous à débloquer davantage la puissance de JMP.
Prendre plaisir!