angelV Posté(e) le 2 juin 2020 Signaler Posté(e) le 2 juin 2020 Bonjour, J'ai reçu un nouvel exercice de la part de mon professeur sur une nouvelle façon d'utiliser python. C'est à dire, de faire en sorte que python utilise les données d'un autre doc appelé : donnees_brutes_iris.csv... (Je vous joint ce doc bien sur) Cependant, je n'arrive pas à répondre aux questions et pourtant, il n'y en a que 4... Voici mon début de script : iris=[{'sepal_length': '' }, {'sepal_width': '' }, {'petal_length': '' }, {'petal_width': '' }] import csv def convert(dico) : return {'petal_length' : float(dico['...']), ... } fichier = open('donnees_brutes_iris.csv', 'r') table = list(csv.DictReader(fichier,delimiter = ",")) iris = [convert(ligne) for ligne in table] fichier.close() Merci d'avance pour votre aide. donnees_brutes_iris.csv
E-Bahut julesx Posté(e) le 3 juin 2020 E-Bahut Signaler Posté(e) le 3 juin 2020 Bonsoir, Comme dit, je regarderai, mais sans garantie d'un résultat à 100%. D'après 1), il faut compléter le "return" par return {'sepal_length' : float(dico['sepal_length']), 'sepal_width' : float(dico['sepal_width']), 'petal_length' : float(dico['petal_length']), 'petal_width' : float(dico['petal_width'])} pour avoir l'ensemble demandé dans "isis". D'après 2), je n'ai pas trouvé d'autre possibilité pour n'avoir que les éléments demandés que de modifier la première partie en ne gardant que les éléments utiles : return {'petal_length' : float(dico['petal_length']), 'petal_width' : float(dico['petal_width'])} Partant de là, le script devient with open('iris_donnees_petal.csv','w') as sortie : objet=csv.DictWriter(sortie,['petal_length','petal_width']) objet.writeheader() objet.writerows(iris) J'ai essayé, ça "marche", sauf qu'avec un logiciel comme LibreOffice, il y a une ligne vide entre chaque ligne de données lorsqu'on ouvre le .csv correspondant. Mais tu t'y connais mieux que moi, je débute en Python (je ne pense d'ailleurs pas que je deviendrai un grand spécialiste, vu mon age ! ). Au plaisir de lire tes commentaires et tes rectification! Bonsoir.
E-Bahut julesx Posté(e) le 4 juin 2020 E-Bahut Signaler Posté(e) le 4 juin 2020 J'ai essayé, ça "marche", sauf qu'avec un logiciel comme LibreOffice, il y a une ligne vide entre chaque ligne de données lorsqu'on ouvre le .csv correspondant. Après une petite recherche, j'ai trouvé la solution. Il faut rajouté newline='' dans la ligne with open.... with open('iris_donnees_petal.csv','w',newline='') as sortie Par contre, je ne vois toujours pas comment ne prendre qu'une partie de "iris" sans modifier la partie 1) comme indiqué précédemment.
angelV Posté(e) le 4 juin 2020 Auteur Signaler Posté(e) le 4 juin 2020 Bonsoir, Je vous remercie sincèrement pour toute votre aide durant mon apprentissage de python. Je trouve ce langage informatique assez complexe et j'ai de grande difficulté par moment. J'ai retravaillé ce que vous m'avez donné et je comprends assez bien votre point de vue. J'ai également du mal à trouvé comment prendre qu'une partie d'iris sans modifier le script... Je vais me renseigner avec mon enseignant. Cependant, il doit y avoir un souci car la suite de l'exercice ne peut pas être effectué par le script après être modifié. Je vous envoie les détails : Voici mon script actuellement modifié : import csv fichier = open('donnees_brutes_iris.csv', 'r') table = [{'petal_length': '' }, {'petal_width': '' }, {'species': '' }] Fichier = open('iris_donnees_petal.csv') table = list(csv.DictReader(fichier, delimiter = ",")) X_iris_0 = [float(ligne['petal_length']) for ligne in table if ligne['species'] == 'setosa'] Y_iris_0 = [float(ligne['petal_width']) for ligne in table if ligne['species'] == 'setosa'] fichier.close() plt.scatter(X_iris_0, Y_iris_0, color = 'g', label = 'setosa',s = 20, marker = '*') plt.scatter(X_iris_1, Y_iris_1, color = 'r', label = 'versicolor', s = 20, marker = '.') plt.scatter(X_iris_2, Y_iris_2, color = 'b', label='virginica', s = 20, marker = '+') plt.xlabel('Longueur des pétales') plt.ylabel('Largeur des pétales') plt.legend() plt.show() plt.savefig('representation_iris.png') Je sais qu'il y a un problème quelque pars mais où ? j'en ai aucune idée mais le script ne trouve pas mon fichier...
E-Bahut julesx Posté(e) le 4 juin 2020 E-Bahut Signaler Posté(e) le 4 juin 2020 Bonsoir, Là, pour ce soir, ce sera bref, à cette heure, je ne suis plus capable de réflexion intense, cf. mon grand age !!! Je vois juste un problème : Dans ce qui précède, le fichier iris 'iris_donnees_petal.csv' ne contient pas les "species". Donc, si on veut travailler avec cette dernière donnée, il faut recréer le fichier CSV correspondant. Donc reprendre toute une partie de ce qui précède ? Je te laisse réfléchir à ce problème...
E-Bahut julesx Posté(e) le 5 juin 2020 E-Bahut Signaler Posté(e) le 5 juin 2020 Bonjour, Le vieux est réveillé ! Donc, j'ai recréé le fichier CSV avec Fischer2 et j'ai programmé la suite avec Fischer3. Je n'ai juste pas mis la sauvegarde de la courbe. Fischer2.py Fischer3.py Je te laisse regarder.
angelV Posté(e) le 6 juin 2020 Auteur Signaler Posté(e) le 6 juin 2020 Alors, j'ai retravaillé tout ça et j'ai compris mon erreur. Je pense en fait que j'ai un peu de mal à penser comme un programmeur... Je vais continuer à retravailler cet exercice. Merci beaucoup.
E-Bahut julesx Posté(e) le 7 juin 2020 E-Bahut Signaler Posté(e) le 7 juin 2020 Bonjour, "Penser comme un programmeur", je crois que ça vient avec le temps. Personnellement, ça fait des années que je crée des petits programmes, avec différents logiciels, ce qui fait que j'ai un peu moins de mal avec Python, bien que certains aspects sont plus que nouveaux pour moi. En tout cas, n'hésite pas à poster s'il y a des points qui te turlupinent dans ces scripts, si c'est dans mes cordes, je te répondrai. Bon dimanche.
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.