Ein Fehler, auf den Sie bei der Verwendung von Pandas stoßen können, ist:

TypeError: no numeric data to plot

Dieser Fehler tritt auf, wenn Sie versuchen, Werte aus einem Pandas-Dataframe darzustellen, aber keine numerischen Werte zum Darstellen vorhanden sind.

Dieser Fehler tritt normalerweise auf, wenn Sie denken, dass eine bestimmte Spalte im DataFrame numerisch ist, sich aber als ein anderer Datentyp herausstellt.

Das folgende Beispiel zeigt, wie dieser Fehler in der Praxis behoben werden kann.

So reproduzieren Sie den Fehler

Angenommen, wir haben den folgenden Pandas DataFrame:

import pandas as pd

#Dataframe erstellen
df = pd.DataFrame({'team': ['A', 'A', 'B', 'B', 'B'],
                   'points': ['5', '7', '7', '9', '12'],
                   'rebounds': ['11', '8', '10', '6', '6'],
                   'blocks': ['4', '7', '7', '6', '5']})

#Dataframe anzeigen
df

    team    points  rebounds blocks
0   A   5   11   4
1   A   7   8    7
2   B   7   10   7
3   B   9   6    6
4   B   12  6    5

Nehmen wir nun an, wir versuchen, ein Liniendiagramm für die drei Variablen zu erstellen, von denen wir glauben, dass sie numerisch sind: Points, Rebounds und Blocks:

# Versuch, Liniendiagramme für Punkte, Rebounds und Blocks zu erstellen
df[['points', 'rebounds', 'blocks']].plot()

ValueError: no numeric data to plot

Wir erhalten eine Fehlermeldung, da keine dieser Spalten tatsächlich numerisch ist.

So beheben Sie den Fehler

Wir können die dtypes-Funktion verwenden, um zu sehen, welchen Datentyp jede Spalte in unserem DataFrame hat:

#Datentyp jeder Spalte in DataFrame anzeigen
df.dtypes

team        object
points      object
rebounds    object
blocks      object
dtype: object

Wir können sehen, dass keine der Spalten im DataFrame numerisch ist.

Wir können die Funktion .astype() verwenden, um bestimmte Spalten in Zahlen umzuwandeln:

# Konvertiere Poins, Rebounds und Blocks in numerische Spalten
df['points']=df['points'].astype(float)
df['rebounds']=df['rebounds'].astype(float)
df['blocks']=df['blocks'].astype(float)

Wir können dann wieder die Funktion plot() verwenden:

# Liniendiagramm für Punkte, Rebounds und Blocks erstellen
df[['points', 'rebounds', 'blocks']].plot()

Schweben

Wir können erfolgreich ein Liniendiagramm für Punkte, Rebounds und Blocks erstellen, da jede Variable jetzt numerisch ist.

Wir können dies überprüfen, indem wir erneut die Funktion dtypes verwenden:

#Datentyp jeder Spalte in DataFrame anzeigen
df.dtypes

team         object
points      float64
rebounds    float64
blocks      float64
dtype: object

Zusätzliche Ressourcen

Die folgenden Tutorials erklären, wie Sie andere häufige Fehler in Python beheben:

So beheben Sie KeyError in Pandas
Behebung: ValueError: Float NaN kann nicht in Integer konvertiert werden
Behebung: ValueError: Operanden konnten nicht zusammen mit Shapes gesendet werden

Statistik: Der Weg zur Datenanalyse

* Amazon Affiliate Link


Das könnte Sie auch interessieren: