Aller au contenu

Nouvelle atout de python...


angelV

Messages recommandés

Posté(e)

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.

 

1.png

2.png

3.png

donnees_brutes_iris.csv

  • E-Bahut
Posté(e)

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
Posté(e)

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.

Posté(e)

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

 

aide.png

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
Posté(e)

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
Posté(e)

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.

Posté(e)

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
Posté(e)

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.

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...
spam filtering
spam filtering