Ausgabe
Ich habe zum ersten Mal versucht, Diagramme zu zeichnen, und versucht, ein bisschen Code zu schreiben, in dem Sie eingeben können, welche Parameter Sie grafisch darstellen möchten, und es dann als Kreisdiagramm darstellt. Aber als ich versuchte, es auszuführen, gab es eine Reihe von Fehlern zurück
import pandas as pd
import matplotlib
plot = input()
plot = str(plot)
df = pd.DataFrame({'Perimeter': [8, 16, 20],
'Area': [2, 16, 25]},
index=['Square 1', 'Square 2', 'Square 3'])
plot = df.plot.pie(y={plot}, figsize=(5, 5))
Die Fehler sind:
C:\Users\KIAN\PycharmProjects\pythonProject\k.py:12: FutureWarning: Das Übergeben eines Sets als Indexer ist veraltet und wird in einer zukünftigen Version ausgelöst. Verwenden Sie stattdessen eine Liste. plot = df.plot.pie(y={plot}, figsize=(5, 5))
Traceback (letzter Aufruf zuletzt):
Datei “C:\Users\KIAN\PycharmProjects\pythonProject\k.py”, Zeile 12, in plot = df.plot.pie(y={plot}, figsize=(5, 5))
Datei “C:\Users\KIAN\PycharmProjects\pythonProject\venv\lib\site-packages\pandas\plotting_core.py”, Zeile 1613, in pie return self(kind=”pie”, **kwargs)
Datei “C:\Users\KIAN\PycharmProjects\pythonProject\venv\lib\site-packages\pandas\plotting_core.py”, Zeile 960, in call
data.index.name = yDatei “C:\Users\KIAN\PycharmProjects\pythonProject\venv\lib\site-packages\pandas\core\indexes\base.py”, Zeile 1751, in name may_extract_name(value, None, type(self))
Datei “C:\Users\KIAN\PycharmProjects\pythonProject\venv\lib\site-packages\pandas\core\indexes\base.py”, Zeile 7421, in may_extract_name TypeError(f”{cls. name }.name auslösen muss ein Hash-Typ sein”)
TypeError: Index.name muss ein hashfähiger Typ sein
Irgendeine Idee, wie man diese beheben kann oder was sie verursacht?
Lösung
Die Variable plot
sollte nicht in einem Satz sein, Sie müssen sie nicht einmal einem zuweisen str
, input
wird bereits eine Zeichenfolge sein, auch wenn Sie Zahlen eingeben:
plot = input()
df = pd.DataFrame({'Perimeter': [8, 16, 20],
'Area': [2, 16, 25]},
index=['Square 1', 'Square 2', 'Square 3'])
plot = df.plot.pie(y=plot, figsize=(5, 5))
Ausgabe für Area
:
Beantwortet von – Nuri Taş
Antwort geprüft von – Clifford M. (FixError Volunteer)