Post-traitement des données dans un fichier csv à l'aide d'un scriptJ'ai un dossier contenant plusieurs fichiers CSV ayant une structure de données similaire dont j'ai besoin pour traiter et stocker les résultats dans un nouveau fichier.
Chaque fichier csv comporte 2 colonnes, je dois traiter les données de la deuxième colonne comme suit :
- Nommez la deuxième colonne comme articles
- Effectuez l'opération suivante sur toutes les lignes en créant une nouvelle colonne x avec la formule suivante :36 + -19.5 * :items+ 49.99 * : articles * : articles * : articles
- Effectuez l'opération suivante sur toutes les lignes de la colonne x en créant la colonne y :
Moyenne( :x[Index( Row() - 4, Row() )] ) - Trouver la moyenne et le maximum de la colonne y
- Stockez la valeur moyenne et maximale dans le fichier et répétez la même procédure pour les autres fichiers. Exemple de fichier CSV Pfa.
J'essaie quelque chose comme ci-dessous, mais comme je suis juste un débutant, alors aidez-moi s'il vous plaît
// Read all the file names
files = Files In Directory( "C:\Users\MyUserName\Documents\My Data\" );
X = N Items( files );
Y = "C:\Users\MyUserName\Documents\My Data\";
//stores the mean and max value of each file
dt = New Table( "My data file");
For( i = 1, i < X, i++,
//open jmp files for each csv files.
dt1 = Open(
Y || files[i],
//Code to add column name and the find mean and max
);
dt1 << Set Name( files[i] );
//I concatenated all the files in one jmp file and close it each time.
dt << Concatenate( Data Table( dt1 ), "Append to first table" );
Close( dt1 );
);
Études de consommation et de marchéOrganisation du contenuAccès aux donnéesMélange et nettoyage des donnéesIngénierie Qualité et ProcédésPartager et communiquer les résultatsRe : Post traitement des données dans un fichier csv à l'aide d'un scriptCela donne une bonne base pour résoudre le problèmeRe : Post traitement des données dans un fichier csv à l'aide d'un scriptMerci d'avoir optimisé et résolu l'erreur, très utile !!Re : Post traitement des données dans un fichier csv à l'aide d'un scriptVous êtes si proche.......
Vous semblez être sur le point de mettre dans une liste les statistiques que vous souhaitez après la lecture de chaque fichier CSV.Votre syntaxe pour ce faire est incorrecte et, à mon avis, vous n'êtes pas obligé de mettre les valeurs dans une liste, mais plutôt de les mettre directement dans votre tableau récapitulatif.De plus, lors du calcul de statistiques sur une colonne, vous devez utiliser la forme colonne de la statistique (c'est-à-dire Col Max() ).Enfin, si une fois le traitement du fichier csv terminé, vous n'avez pas besoin qu'il continue à traîner, vous pouvez simplement le fermer.J'ai ajouté une ligne qui ferait cela, mais je l'ai commentée.Supprimez simplement le // si vous souhaitez qu'il prenne effet.
Names Default To Here( 1 );
// Use a function to open a .CSV file: Given the path to such a file, returns a reference to the resulting table
openMyCSV = Function( {path2File},
{Default Local},
dt = Open(
path2File,
columns(
New Column( "column 1", Numeric, "Continuous", Format( "Best", 12 ) ),
New Column( "items", Numeric, "Continuous", Format( "Best", 12 ) )
),
Import Settings(
End Of Line( CRLF, CR, LF ),
End Of Field( Comma, CSV( 0 ) ),
Strip Quotes( 1 ),
Use Apostrophe as Quotation Mark( 0 ),
Use Regional Settings( 0 ),
Scan Whole File( 1 ),
Treat empty columns as numeric( 0 ),
CompressNumericColumns( 0 ),
CompressCharacterColumns( 0 ),
CompressAllowListCheck( 0 ),
Labels( 0 ),
Column Names Start( 1 ),
Data Starts( 1 ),
Lines To Read( "All" ),
Year Rule( "20xx" )
)
)
);
// Start your summary table
dt = New Table( "My summary file" );
dt << New Column( "MovAvgMean", Numeric );
dt << New Column( "MovAvgMax", Numeric );
// Put all the .csv files to process into a list
dir = Pick Directory(
"Directory containing your csv files",
"C:\Users\shilpajo\Documents\PV\KT\LIMC\iccMax\DIADEM\JMP\files\"
);
files = Files In Directory( dir );
For( f = N Items( files ), f >= 1, f--,
If( !Ends With( Uppercase( files[f] ), ".CSV" ),
Remove From( files, f )
)
);
// Process each file - Incomplete!
For( f = 1, f <= N Items( files ), f++,
thisTable = openMyCSV( dir || files[f] );
thisTable << New Column( "x",
Numeric,
Continuous,
Formula( 36 + -19.5 * :items + 49.99 * :items * :items * :items )
);
thisTable << New Column( "av", Numeric, Continuous, Formula( Mean( :x[Index( Row() - 9, Row() )] ) ) );
// This will insure that all formula processing is complet before the next statement is run
thisTable << run formulas;
// Add the summary statistics to the summary table
dt << Add Rows( 1 );
dt:MovAvgMean[N Rows( dt )] = Col Mean( thisTable:av );
dt:MovAvgMax[N Rows( dt )] = Col Max( thisTable:av );
// Close( thisTable, nosave );
);
Re : Post traitement des données dans un fichier csv à l'aide d'un scriptCe code m'a été très utile pour démarrer.Le code ci-dessous fonctionne parfaitement. Par stockage, je veux dire que je dois créer un tableau récapitulatif contenant la moyenne et le maximum de la colonne av de chaque fichier csv, comment puis-je faire cela ?
J'ai essayé d'utiliser : dt << Ajouter des lignes ({MovAvgMean = Moyenne(:av) , MovAvgMax = Max(:av)} ); // liste unique
Mais ça ne marche pas car j'obtiens une erreur
Nom non résolu : av{1} dans l'accès ou l'évaluation de 'av' , :av/*###*/
NamesDefaultToHere(1);
// Use a function to open a .CSV file: Given the path to such a file, returns a reference to the resulting table
openMyCSV =
function({path2File}, {Default Local},
dt = Open(
path2File,
columns(
New Column( "column 1", Numeric, "Continuous", Format( "Best", 12 ) ),
New Column( "items", Numeric, "Continuous", Format( "Best", 12 ) )
),
Import Settings(
End Of Line( CRLF, CR, LF ),
End Of Field( Comma, CSV( 0 ) ),
Strip Quotes( 1 ),
Use Apostrophe as Quotation Mark( 0 ),
Use Regional Settings( 0 ),
Scan Whole File( 1 ),
Treat empty columns as numeric( 0 ),
CompressNumericColumns( 0 ),
CompressCharacterColumns( 0 ),
CompressAllowListCheck( 0 ),
Labels( 0 ),
Column Names Start( 1 ),
Data Starts( 1 ),
Lines To Read( "All" ),
Year Rule( "20xx" )
)
)
);
dt = New Table( "My data file");
dt << New Column( "MovAvgMean", Numeric );
dt << New Column( "MovAvgMax", Numeric );
// Put all the .csv files to process into a list
dir = pickDirectory("Directory containing your csv files", "$DESKTOP");
files = filesInDirectory(dir);
for(f = NItems(files), f>=1, f--, if(!endsWith(uppercase(files[f]), ".CSV"), removeFrom(files, f)));
// Process each file - Incomplete!
for(f = 1, f <= NItems(files), f++,
thisTable = openMyCSV(dir||files[f]);
thisTable << newColumn("x", Numeric, Continuous, Formula(36 + -19.5 * :items + 49.99 *:items* :items* :items));
thisTable << newColumn("av", Numeric, Continuous, Formula(Mean( :x[Index( Row() - 9, Row() )] )));
dt << Add Rows( {MovAvgMean =Mean(:av), MovAvgMax = Max(:av)} ); // single list
);
// Make the summary table
Re : Post traitement des données dans un fichier csv à l'aide d'un scriptSi vous débutez, vous devriez procéder par étapes, en comprenant comment fonctionne chaque partie. Utilisez « Aide > Index de script » et « Aide > Livres > Guide de script » pour rechercher des informations.
Le code ci-dessous devrait vous aider à démarrer et vous pourrez peut-être faire le reste. Vous devrez être plus précis sur ce que vous entendez par « stocker la valeur ». . . dans le fichier'.
NamesDefaultToHere(1);
// Use a function to open a .CSV file: Given the path to such a file, returns a reference to the resulting table
openMyCSV =
function({path2File}, {Default Local},
dt = Open(
path2File,
columns(
New Column( "column 1", Numeric, "Continuous", Format( "Best", 12 ) ),
New Column( "items", Numeric, "Continuous", Format( "Best", 12 ) )
),
Import Settings(
End Of Line( CRLF, CR, LF ),
End Of Field( Comma, CSV( 0 ) ),
Strip Quotes( 1 ),
Use Apostrophe as Quotation Mark( 0 ),
Use Regional Settings( 0 ),
Scan Whole File( 1 ),
Treat empty columns as numeric( 0 ),
CompressNumericColumns( 0 ),
CompressCharacterColumns( 0 ),
CompressAllowListCheck( 0 ),
Labels( 0 ),
Column Names Start( 1 ),
Data Starts( 1 ),
Lines To Read( "All" ),
Year Rule( "20xx" )
)
)
);
// Put all the .csv files to process into a list
dir = pickDirectory("Directory containing your csv files", "$DESKTOP");
files = filesInDirectory(dir);
for(f = NItems(files), f>=1, f--, if(!endsWith(uppercase(files[f]), ".CSV"), removeFrom(files, f)));
// Process each file - Incomplete!
for(f = 1, f <= NItems(files), f++,
thisTable = openMyCSV(dir||files[f]);
thisTable << newColumn("x", Numeric, Continuous, Formula(36 + -19.5 * :items + 49.99 *:items* :items* :items));
);