Affichage d'un graphique avec matplotlib
Résolu
Bonjour,
Je rencontre un problème lorsque j'exécute le script ci-dessous pour afficher un graphique et j'ai un gros message d'erreur qui apparaît mais je ne vois pas où se trouve l'erreur.
Voici le script :
Et voici l'erreur (yeux sensibles, s'abstenir ...) :
Je ne comprends pas vraiment toutes ces lignes mais je suppose que l'erreur se trouve lorsque j'essaie de lier mon script python avec mon fichier Excel qui contient toutes les données. J'ai bien vérifié que les noms correspondaient et que les deux fichiers étaient situés dans le même répertoire.
Quelqu'un saurait m'aider svp ? Je lui en serais énormément reconnaissant.
Cordialement.
Je rencontre un problème lorsque j'exécute le script ci-dessous pour afficher un graphique et j'ai un gros message d'erreur qui apparaît mais je ne vois pas où se trouve l'erreur.
Voici le script :
import pandas import matplotlib.pyplot as plt iris = pandas.read_csv("iris.csv") x = iris.loc[:,"petal_length"] y = iris.loc[:,"petal_width"] lab = iris.loc[:,"species"] plt.axis("equal") plt.scatter(x[lab==0], y[lab==0], color='g', label="setosa") plt.scatter(x[lab==1], y[lab==1], color='r', label="versicolor") plt.scatter(x[lab==2], y[lab==2], color='b', label="virginica") plt.legend() plt.show()
Et voici l'erreur (yeux sensibles, s'abstenir ...) :
Traceback (most recent call last):
File "C:\Users\xxxxx\AppData\Local\Programs\Python\Python39\lib\site-packages\pandas\core\indexes\base.py", line 3080, in get_loc
return self._engine.get_loc(casted_key)
File "pandas\_libs\index.pyx", line 70, in pandas._libs.index.IndexEngine.get_loc
File "pandas\_libs\index.pyx", line 101, in pandas._libs.index.IndexEngine.get_loc
File "pandas\_libs\hashtable_class_helper.pxi", line 4554, in pandas._libs.hashtable.PyObjectHashTable.get_item
File "pandas\_libs\hashtable_class_helper.pxi", line 4562, in pandas._libs.hashtable.PyObjectHashTable.get_item
KeyError: 'petal_length'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:\Users\xxxxx\Desktop\Exo_KNN\iris.py", line 4, in <module>
x = iris.loc[:,"petal_length"
File "C:\Users\xxxxx\AppData\Local\Programs\Python\Python39\lib\site-packages\pandas\core\indexing.py", line 889, in __getitem__
return self._getitem_tuple(key)
File "C:\Users\xxxxx\AppData\Local\Programs\Python\Python39\lib\site-packages\pandas\core\indexing.py", line 1060, in _getitem_tuple
return self._getitem_lowerdim(tup)
File "C:\Users\xxxxx\AppData\Local\Programs\Python\Python39\lib\site-packages\pandas\core\indexing.py", line 807, in _getitem_lowerdim
section = self._getitem_axis(key, axis=i)
File "C:\Users\xxxxx\AppData\Local\Programs\Python\Python39\lib\site-packages\pandas\core\indexing.py", line 1124, in _getitem_axis
return self._get_label(key, axis=axis)
File "C:\Users\xxxxx\AppData\Local\Programs\Python\Python39\lib\site-packages\pandas\core\indexing.py", line 1073, in _get_label
return self.obj.xs(label, axis=axis)
File "C:\Users\xxxxx\AppData\Local\Programs\Python\Python39\lib\site-packages\pandas\core\generic.py", line 3724, in xs
return self[key]
File "C:\Users\xxxxx\AppData\Local\Programs\Python\Python39\lib\site-packages\pandas\core\frame.py", line 3024, in __getitem__
indexer = self.columns.get_loc(key)
File "C:\Users\xxxxx\AppData\Local\Programs\Python\Python39\lib\site-packages\pandas\core\indexes\base.py", line 3082, in get_loc
raise KeyError(key) from err
KeyError: 'petal_length'
Je ne comprends pas vraiment toutes ces lignes mais je suppose que l'erreur se trouve lorsque j'essaie de lier mon script python avec mon fichier Excel qui contient toutes les données. J'ai bien vérifié que les noms correspondaient et que les deux fichiers étaient situés dans le même répertoire.
Quelqu'un saurait m'aider svp ? Je lui en serais énormément reconnaissant.
Cordialement.
A voir également:
- Affichage d'un graphique avec matplotlib
- Changer carte graphique - Guide
- Affichage double ecran - Guide
- Comment faire un graphique sur excel - Guide
- Graphique sparkline - Guide
- Windows 11 affichage classique - Guide
6 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour,
peux-tu partager ton fichier csv?
peux-tu partager ton fichier csv?
Je voudrais bien mais comment fait-on pour partager un fichier sur ce forum ? Je ne vois que l'option de partage d'images.
Sinon je peux vous envoyer vers la page de téléchargement du fichier mais le site n'est pas sécurisé.
Si vous souhaitez quand même le télécharger, le fichier s'appelle "iris.csv" et est contenu dans l'archive : http://ressource.elec.free.fr/docs/NSI/knn/knn-fichiers-eleves.zip
Sinon je peux vous envoyer vers la page de téléchargement du fichier mais le site n'est pas sécurisé.
Si vous souhaitez quand même le télécharger, le fichier s'appelle "iris.csv" et est contenu dans l'archive : http://ressource.elec.free.fr/docs/NSI/knn/knn-fichiers-eleves.zip
Tu peux le partager sur un site tiers e.g. pastebin. Ou sinon tu peux copier coller les premières lignes de ton fichier csv dans ton prochain message, ça devrait suffire pour comprendre l'erreur. Mais vu ton erreur,
pandasne comprend pas à quoi la clé
petal_length.
Merci à vous pour vos réponses tout d'abord.
Voici les premières lignes de mon fichier :
PS: Les ";" correspondent à la délimitation entre les colonnes.
@mamiemando J'ai émis la même hypothèse mais je ne trouve pas de solution ...
Voici les premières lignes de mon fichier :
petal_length ; petal_width ; species
1.4;0.2;0
1.4;0.2;0
1.3;0.2;0
1.5;0.2;0
1.4;0.2;0
1.7;0.4;0
1.4;0.3;0
1.5;0.2;0
PS: Les ";" correspondent à la délimitation entre les colonnes.
@mamiemando J'ai émis la même hypothèse mais je ne trouve pas de solution ...
Bonjour,
Par défaut pandas utilise "," comme séparateur, donc tu charges mal ton csv. Cela se voit si tu affiches le contenu de ta dataframe :
... on voit que la séparation n'est pas faite comme prévu :
SI on précise le séparateur comme expliqué dans la documentation on aboutit à :
... et du coup
Bonne chance
Par défaut pandas utilise "," comme séparateur, donc tu charges mal ton csv. Cela se voit si tu affiches le contenu de ta dataframe :
import pandas import matplotlib.pyplot as plt iris = pandas.read_csv("iris.csv") print(iris)
... on voit que la séparation n'est pas faite comme prévu :
petal_length;petal_width;species
0 1.4;0.2;0
1 1.4;0.2;0
2 1.3;0.2;0
3 1.5;0.2;0
4 1.4;0.2;0
5 1.7;0.4;0
6 1.4;0.3;0
7 1.5;0.2;0
SI on précise le séparateur comme expliqué dans la documentation on aboutit à :
import pandas import matplotlib.pyplot as plt iris = pandas.read_csv("iris.csv", sep=";") print(iris)
petal_length petal_width species
0 1.4 0.2 0
1 1.4 0.2 0
2 1.3 0.2 0
3 1.5 0.2 0
4 1.4 0.2 0
5 1.7 0.4 0
6 1.4 0.3 0
7 1.5 0.2 0
... et du coup
iris.loc[:,"petal_length"]marchera.
Bonne chance
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question