Bibm@th

Forum de mathématiques - Bibm@th.net

Bienvenue dans les forums du site BibM@th, des forums où on dit Bonjour (Bonsoir), Merci, S'il vous plaît...

Vous n'êtes pas identifié(e).

#1 15-10-2021 09:26:10

bgusci
Membre
Inscription : 15-10-2021
Messages : 2

Création d'une matrice pour récupérer des données

Bonjour !

Dans le cadre de mon travail, j'aimerai récupérer les données d'une boucle dans une matrice pour ensuite obtenir un tableau pdf. J'ai 45 fichiers à traiter et à la fin de ma boucle je voudrais recueillir les données d'un seul fichier et les ajouter à un tableau et ainsi de suite jusqu'au 45ème fichier.
Cependant je rencontre un problème pour la matrice de récupération des data. Un message d'erreur apparaît "Sous-matrice incorrectement définie."
Voici mon code pour vous aider à mieux comprendre :

 Bilan(i) =[masse,V0,F0,F0norm,Pmax,Pmaxnorm,slope,meanRF10,RFpeak,DRF,tpscinqmetre,tpsdixmetre,tpsvingtmetre,[],[],distancedeuxsec,distancequatresec,Vmax,Tau]

Les variables étant rentrées pour avoir en gros 19 colonnes et 45 lignes. Les colonnes représentant les variables calculées et les lignes chaque nouveau fichier traité.

Pouvez-vous m'aider s'il vous plaît ? :)

Merci d'avance !

Hors ligne

#2 17-10-2021 09:53:00

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 988

Re : Création d'une matrice pour récupérer des données

Bonjour,

Pour pouvoir peut-être t'aider, plusieurs questions
1. La première, et non des moindres : avec quel langage, travailles-tu ? Probablement pas Python, à cause de l'écriture Bilan(i)=[...], alors  C, C++ , JAVA... ?

2. Tes 45 fichiers de données sont issus de quel logiciel. Excel ? Une SGBD ? Laquelle ? Quelle est l'extension de ces fichiers ?
    Sans connaissance de la structure de l'enregistrement de ces données, c'est pratiquement impossible.

3. 

et les ajouter à un tableau et ainsi de suite jusqu'au 45ème fichier.

Et c'est ce tableau que tu veux stocker et sauvegarder dans un fichier pdf ?

@+


Arx Tarpeia Capitoli proxima...

Hors ligne

#3 17-10-2021 18:35:51

bgusci
Membre
Inscription : 15-10-2021
Messages : 2

Re : Création d'une matrice pour récupérer des données

Bonjour !

Tout d'abord merci pour ta réponse.

Je n'ai effectivement pas précisé mon logiciel, désolé. C'est Scilab donc du langage C si je ne dis pas de bétises. Le (i) étant l'indice de ma boucle.

Et du coup, pour résumer rapidement : les données que j'ai obtenu proviennent d'un Radar et ce sont les vitesses de sprint de mes athlètes. A partir de ces vitesses j'ai établit différentes variables (qui correspondent aux 18 colonnes du tableau final). Mais à la base, les données brutes proviennent d'un fichier texte.

Et oui, in fine c'est l'idée pour pouvoir rendre un rapport plus lisible.

Au besoin je peux copier/coller l'ensemble du code.

Merci pour ton aide ! A bientôt.

Dernière modification par bgusci (17-10-2021 18:37:22)

Hors ligne

#4 17-10-2021 20:39:03

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 988

Re : Création d'une matrice pour récupérer des données

Re,

C...
C'est bien ce que je craignais...
J'ai qq notions de C et C++ mais je crains que cela ne soit insuffisant pour ce boulot.

J'essaie de résumer ta problématique :
remplacer 45 fichiers comprenant 1 ligne de 19 colonnes par un seul fichier comprenant un tableau de 45 lignes de 19 colonnes.

J'ai deux moyens de le faire :
- En Python pur, où les tableaux n'existent pas, mais où on gère des listes, des liste de sous_listes toutes du même format,
(ici 45 listes de 19 colonnes à agréger en une seule liste de 45 sous-listes, chaque sous-liste correspondant à une ligne ?)
- En Python + extension numpy où on gère de vrais tableaux multidimensionnels.
Même si ce ne sont pas des matrices proprement dites, ça devrait suffire

Pour effectuer un routage postal de revues, je traite (ce traitement est une analyse de colonnes bien particulières) chaque trimestre, un fichier excel de 15 colonnes et 130 lignes, converti en fichier .csv...
Par exemple j'ai une colonne code Postal :
je dois repérer tous ceux dont le code postal est identique parmi ceux du même département (les 2 premiers chiffres) :
si dans le même département, j'ai au minimum 6 codes postaux identiques je fais une liasse de CP ; si j'ai 6 personnes dans le même dept avec des CP différents je fais une liasse Dept.
J'ai besoin de totaliser le nb d'envois en CP, le nb d'envois en Dept, le reste étant le tout venant, classé par dept (les tarifs ne sont pas les mêmes.
Et ça se gère bien en Python pur grâce au format csv.
Alors là, bien sûr, le fichier global est déjà existant.

Sinon, je dispose d'un fichier qui pèse, zippé, 18 Mo regroupant dépt par dépt toutes les communes de France, toutes rues, avenues, boulevard, chemins, impasses, dans un fichier texte de quelques milliers de lignes...
Le traiter chargé dans un traitement de textes était une galère pas possible tellement c'était long, donc j'ai créé un petit fichier qui analyse le fichier décompressé ligne par ligne et qui me découpe tout ça par dept et crée un fichier au nom du n° de  dept.
Donc
1. Je n'ai besoin de charger qu'un dept à la fois, et seulement ceux dans lesquels habitent des destinataires...
Là, j'analyse le fichier global pour déterminer où commence un dept où il finit, puis d'extraire l'une après les lignes n° début_dpt à n° fin_dpt et de les enregistrer une par une dans le fichier préalablement ouvert sous le nom du n° de dept et de fermer le fichier à la fin.
C'est la problématique inverse et bien plus délicat...

Si vraiment tu as 45 fichiers de 1 ligne de 19 colonnes.
Moyennant avoir la liste des noms ou n°s de fichiers du 1 au 45,
1. Je déclare deux tableaux (ou listes) vides. L'un sera le tableau final, l'autre sera un tableau de transit.
2. J'ouvre le le fichier n° n (1<=n<=45)
3. Je lis l'une après l'autre chaque colonne du fichier n dont je stocke le contenu dans la liste ou tableau de transit, l'une après les colonnes du fichier ouvert.   
4. J'ajoute dans ma liste globale, la sous liste de transit.
5. Je ferme le fichier chargé, et je vide la liste de transit.
6. J'incrémente de 1 le n° de fichier à ouvrir (si n =46 j'arrête les opérations) et je retourne au point 2.

Si je veux enregistrer un seul fichier global, ma procédure devient :
1. J'ouvre sur disque un fichier qui sera le fichier global
2. J'ouvre le le fichier n° n (1<=n<=45)
3. Je lis l'une après l'autre chaque colonne du fichier n que j'enregistre à la volée l'une après les colonnes dans le fichier global.   
4. Je ferme le fichier n° n chargé
5. J'incrémente de 1 le n° de fichier à ouvrir (si n =46 j'arrête les opérations, je ferme le fichier global) et je retourne au point 2.

Exemple de liste multi-dimensionnelle en Python :
[["AB", 0.5, 7, -1],["DE",0.09, 10,0],["BC", 1.1,  6, -2],["CF", 0.5, 0.09, 8]]
que je peux ensuite présenter à l'écran sous cette forme :


AB  0.50  7    -1
DE  0.09 10     0
BC  1.10  6    -2
CF  0.50  0.09  8

Est-ce que ce que je te dis t'inspire une réflexion ?

@+


Arx Tarpeia Capitoli proxima...

Hors ligne

#5 18-10-2021 17:36:12

Matou
Invité

Re : Création d'une matrice pour récupérer des données

Bonjour,

dans le code que tu présentes, il ya quelque chose que je ne comprends pas : la définition de Bilan(i) se termine par
[],[],distancedeuxsec,distancequatresec,Vmax,Tau]

Est(ce que tu peux expliquer pourquoi il y a [],[],...

Cordialement

Matou

Réponse rapide

Veuillez composer votre message et l'envoyer
Nom (obligatoire)

E-mail (obligatoire)

Message (obligatoire)

Programme anti-spam : Afin de lutter contre le spam, nous vous demandons de bien vouloir répondre à la question suivante. Après inscription sur le site, vous n'aurez plus à répondre à ces questions.

Quel est le résultat de l'opération suivante (donner le résultat en chiffres)?
quatre-vingt six moins soixante trois
Système anti-bot

Faites glisser le curseur de gauche à droite pour activer le bouton de confirmation.

Attention : Vous devez activer Javascript dans votre navigateur pour utiliser le système anti-bot.

Pied de page des forums