Gestion des fichiers CSV
Fermé
samirbenouaret
Messages postés
9
Date d'inscription
samedi 22 août 2020
Statut
Membre
Dernière intervention
2 septembre 2020
-
22 août 2020 à 21:36
samirbenouaret Messages postés 9 Date d'inscription samedi 22 août 2020 Statut Membre Dernière intervention 2 septembre 2020 - 24 août 2020 à 01:11
samirbenouaret Messages postés 9 Date d'inscription samedi 22 août 2020 Statut Membre Dernière intervention 2 septembre 2020 - 24 août 2020 à 01:11
A voir également:
- Gestion des fichiers CSV
- Wetransfer gratuit fichiers lourd - Guide
- Renommer des fichiers en masse - Guide
- Logiciel gestion photo gratuit - Guide
- Gestion des fichiers - Télécharger - Gestion de fichiers
- Explorateur de fichiers - Guide
4 réponses
WillemVDD
Messages postés
6
Date d'inscription
vendredi 25 mai 2018
Statut
Membre
Dernière intervention
23 août 2020
22 août 2020 à 22:30
22 août 2020 à 22:30
Je ne suis pas sûr de comprendre la question, donc je vais peut-être répondre à coté, mais tu peux rechercher le fichier de type .csv dans un répertoire de l'ordinateur en utilisant la notation '*.csv', ce qui signifie "tous le fichier de type .csv". Si par exemple tu as plusieurs fichier .csv dans un même répertoire, tu peux utiliser cela dans une boucle pour récupérés les données de tous les fichiers sans jamais utiliser leur nom.
Après je ne vois pas trop à quoi ça sert de faire cela, n'hésite pas à donner un peu de contexte (quel est le but de ton code?), parfois savoir cela permet de trouver une solution alternative ...
Après je ne vois pas trop à quoi ça sert de faire cela, n'hésite pas à donner un peu de contexte (quel est le but de ton code?), parfois savoir cela permet de trouver une solution alternative ...
samirbenouaret
Messages postés
9
Date d'inscription
samedi 22 août 2020
Statut
Membre
Dernière intervention
2 septembre 2020
23 août 2020 à 15:07
23 août 2020 à 15:07
Je vius remercie pour votre réponse; Alors le but de ce code c'est de traiter des fichiers de type csv avec python.il va me demander le nom de fichier, je lui donne le nom de fichier 1 (produit) et il va traiter les données.Pour la 2 ème fois, il va me demander le nom de fichier 2 , je lui donne le nom (étudiants) et il va traiter les données. Donc le but de ce code est de traiter un fichier sans mettre sans nom dans le code.
nom_fichier=input("donner moi le nom de fichier: ")
Aprés que je lui donne le nom1 il va le traiter directement, c'est à direavant l'exécution du programme je mis pas son nom.
nom_fichier=input("donner moi le nom de fichier: ")
Aprés que je lui donne le nom1 il va le traiter directement, c'est à direavant l'exécution du programme je mis pas son nom.
WillemVDD
Messages postés
6
Date d'inscription
vendredi 25 mai 2018
Statut
Membre
Dernière intervention
23 août 2020
23 août 2020 à 22:54
23 août 2020 à 22:54
D’accord je vois, merci pour les précisions. Dans ce cas il suffit d’utiliser une fonction non ?
Par exemple mettons que ta fonction de lecture de données de fichier .csv ressemble à ça :
alors cette fonction c’est celle que j’utilise tout le temps, mais dans l’idée il suffit d’utiliser un argument à la place du nom du fichier dans la ligne open(filename,'r').
Il suffit ensuite d’appeler la fonction plus loin dans le code avec la ligne :
où bien sûr les arguments sont remplacé par leurs valeurs.
Pour la suite, la plus part des utilisateurs de python qui font de l’analyse de données évite de demander à l’utilisateur d’entré manuellement le nom du fichier, quitte à empiler la ligne d’appel avec 40 noms de fichier différent. L’objectif est que le code puisse être lancé et être 100% autonome, utile lorsque les calculs commence à être long …
Dans ton cas ça ne change pas grand-chose, demande à l’utilisateur le nom du fichier via un input en l’enregistrant dans la variable filename, avant la ligne d’appel. D’ailleurs, on peut même placer ça dans une boucle, comme suivant :
et si tu ne sait pas à l'avance combien de fichier tu auras a traiter, pourquoi pas :
c'est pas ce qu'il n'y a de plus propre mais bon ...
Voilè j'espère que ça ta aidé, si tu as des questions supplémentaire n’hésite pas !
Parenthèse sur la fonction lecteurDonnees
Les arguments filename, n, entete sont respectivement : le nom du fichier (ou adresse complète de l'emplacement du fichier dans le cas où le fichier ne se trouve pas dans le même répertoire que le code python), le nombre de lignes totale à lire, et le nombre de lignes d'entêtes à sauter (typiquement les infos sur le contenu du fichier, si il n'y en a pas, mettre 0).
En modifiant le contenue de [ ] dans la ligne 9 tu peux choisir quoi mettre en cas de case vide dans le tableur, et en modifient le contenue de la .split() dans la ligne 11 tu peux choisir quel est l’élément séparateur entre les éléments de chaque ligne de ton fichier (utile si la fonction sert à lire autre chose que des fichiers .xls .csv, comme des .txt).
(Si il s'agit de valeur numérique ne pas oublier de remplacer la ligne 13 par
Fin de la parenthèse
Par exemple mettons que ta fonction de lecture de données de fichier .csv ressemble à ça :
def lecteurDonnees(filename,n,entete): f=open(filename,'r') i=0 while i<entete: f.readline() i=i+1 data=[] for i in range(0,n): data.append([]) for ligne in f: valeur=ligne.split() for i in range(0,n): data[i].append(float(valeur[i])) return data
alors cette fonction c’est celle que j’utilise tout le temps, mais dans l’idée il suffit d’utiliser un argument à la place du nom du fichier dans la ligne open(filename,'r').
Il suffit ensuite d’appeler la fonction plus loin dans le code avec la ligne :
lecteurDonnees(filename,n,entete)
où bien sûr les arguments sont remplacé par leurs valeurs.
Pour la suite, la plus part des utilisateurs de python qui font de l’analyse de données évite de demander à l’utilisateur d’entré manuellement le nom du fichier, quitte à empiler la ligne d’appel avec 40 noms de fichier différent. L’objectif est que le code puisse être lancé et être 100% autonome, utile lorsque les calculs commence à être long …
Dans ton cas ça ne change pas grand-chose, demande à l’utilisateur le nom du fichier via un input en l’enregistrant dans la variable filename, avant la ligne d’appel. D’ailleurs, on peut même placer ça dans une boucle, comme suivant :
filename='' for i in range(n): print('Enter le nom du fichier %01d'%(i+1)) filename=input() print(filename) lecteurDonnees(filename,100,0)
et si tu ne sait pas à l'avance combien de fichier tu auras a traiter, pourquoi pas :
filename,i='',0 while filename!='stop': print('Enter le nom du fichier %01d (stop pour terminer)'%(i+1)) filename=input() lecteurDonnees(filename,100,0) i=i+1
c'est pas ce qu'il n'y a de plus propre mais bon ...
Voilè j'espère que ça ta aidé, si tu as des questions supplémentaire n’hésite pas !
Parenthèse sur la fonction lecteurDonnees
Les arguments filename, n, entete sont respectivement : le nom du fichier (ou adresse complète de l'emplacement du fichier dans le cas où le fichier ne se trouve pas dans le même répertoire que le code python), le nombre de lignes totale à lire, et le nombre de lignes d'entêtes à sauter (typiquement les infos sur le contenu du fichier, si il n'y en a pas, mettre 0).
En modifiant le contenue de [ ] dans la ligne 9 tu peux choisir quoi mettre en cas de case vide dans le tableur, et en modifient le contenue de la .split() dans la ligne 11 tu peux choisir quel est l’élément séparateur entre les éléments de chaque ligne de ton fichier (utile si la fonction sert à lire autre chose que des fichiers .xls .csv, comme des .txt).
(Si il s'agit de valeur numérique ne pas oublier de remplacer la ligne 13 par
data[i].append(float(valeur[i]))).
Fin de la parenthèse
samirbenouaret
Messages postés
9
Date d'inscription
samedi 22 août 2020
Statut
Membre
Dernière intervention
2 septembre 2020
24 août 2020 à 01:11
24 août 2020 à 01:11
Je vous remercie infinnement, c'est trop gentil de votre part. J'ai exécuté le programme, il me demande d'entrer le nom de fichier, il trouve le fichier normal dans le répértoire de mon travail. En fait j'ai un fichier des fichiers excel qui sont vraimment pleins de données (131072 lignes). Je veux récupérer juste les valeurs numériques, mais le problème j'ai essyaé avec data[i].append(float(valeur[i])), mais il répond erreur(impossibel de convertir caractère en float).
Je veux commencer la lecture à partir le ligne 14, jai mets dans lecturedonnées(filename,131072,14), mais ça marche pas.
j'ai aussi une autre question, est ce que je peux définir la variable filename dans la fonction np.loadtxt, c'est-à-dire comme ça: pointage= ("filename",delimiter=';',skiprows=14)
Je vous remercie pour votre compréhension.
Je vous souhaite une excellente semaine.
Je veux commencer la lecture à partir le ligne 14, jai mets dans lecturedonnées(filename,131072,14), mais ça marche pas.
j'ai aussi une autre question, est ce que je peux définir la variable filename dans la fonction np.loadtxt, c'est-à-dire comme ça: pointage= ("filename",delimiter=';',skiprows=14)
Je vous remercie pour votre compréhension.
Je vous souhaite une excellente semaine.