TypeError: Die Serie kann in Python nicht in <Class 'Float'> konvertiert werden

Salman Mehmood 15 Februar 2024
TypeError: Die Serie kann in Python nicht in <Class 'Float'> konvertiert werden

Mit dieser Erklärung erfahren wir, warum wir den Fehler TypeError: cannot convert the series to <class 'float'> erhalten. Wir werden auch lernen, wie man es behebt und den Datentyp einer Pandas-Serie in Python ändert.

Konvertieren Sie den Datentyp einer Pandas-Serie ohne Fehler in Python

Lassen Sie uns mit einem Beispieldatensatz springen. Wir importieren die Pandas-Bibliothek und dann den Datensatz; Wir beginnen mit dem Alkoholkonsum nach Ländern.

Wir deklarieren eine Variable namens Alcohol und lesen die CSV-Datei von http://bit.ly/drinksbycountry.

Nachdem wir den folgenden Code ausgeführt haben, schauen wir uns das head() an, und wir sollten sechs Spalten und vier Zeilen numerisch sehen.

import pandas as pd

Alcohol = pd.read_csv("http://bit.ly/drinksbycountry")
Alcohol.head()

Ausgang:

python typeerror kann die Reihe nicht in die Klasse float - dataset umwandeln

Sehen wir uns die Datentypen dieser Spalten an. Wir werden das Attribut dtypes des Datenrahmens Alkohol verwenden, um die Datentypen zu finden.

Alcohol.dtypes

Jetzt werden wir sehen, dass drei unserer Spalten Integer-Spalten sind, wir haben eine Fließkommaspalte, und dann sind zwei Spalten Objekte, was bedeutet, dass Land und Kontinent nur Zeichenfolgen sind.

Ausgang:

Datentypen von Spalten

Angenommen, wir möchten die Spalte spirit_servings in einen Fließkommawert statt in eine ganze Zahl konvertieren. Alles, was wir tun müssen, ist die Serienmethode astype() zu verwenden und ihr float zu übergeben, was bedeutet, dass wir sie in den Fließkommatyp konvertieren.

Wenn wir den Datenrahmen ändern möchten, können Sie eine neue Spalte hinzufügen oder die vorhandene Spalte spirit_servings überschreiben. Wenn wir dtypes definieren, um die Datentypen von Spalten zu überprüfen, sehen wir, dass es sich geändert hat und spirit_servings jetzt eine Gleitkommaspalte ist.

Alcohol["spirit_servings"] = Alcohol.spirit_servings.astype(float)
Alcohol.dtypes

Ausgang:

Konvertieren Sie die Spalte Spirit_Servings mit astype()

Jetzt fragen Sie sich vielleicht, wozu das gut ist. Sie tun dies normalerweise, wenn Sie eine Datendatei haben, in der die Zahlen als Zeichenfolgen gespeichert sind, und sie in Pandas-Zeichenfolgen eingelesen haben, aber die Mathematik darauf anwenden möchten.

Um die Mathematik für eine Spalte auszuführen, muss es sich um einen numerischen Typ handeln, daher sollte Ihr Spaltentyp ein Float sein, was der häufigere Anwendungsfall ist. Wenn Sie es nicht in den Float-Typ konvertieren, erhalten Sie einen Fehler, der etwa so lauten würde: TypeError: cannot convert the series to <class 'float'>.

Eine weitere Frage stellt sich: Wie hat es den Typ jeder Spalte gefunden, bevor es die CSV-Datei tatsächlich gelesen hat? Jetzt werden wir die Datentypen während des CSV-Lesevorgangs ändern; Wir müssen einen weiteren Parameter hinzufügen, dtype.

Wir übergeben es an ein Wörterbuch; Der Wörterbuchschlüssel ist spirit_servings, und der Wörterbuchwert ist ein Float. Wenn wir nun den Datentyp dieser Spalte überprüfen, sehen wir, dass spirit_servings wieder einmal in ein Fließkomma umgewandelt wurde.

Alcohol = pd.read_csv(
    "http://bit.ly/drinksbycountry", dtype={"spirit_servings": "float"}
)
Alcohol.dtypes

Ausgang:

Konvertieren Sie die Spalte Spirit_Servings mit dtype

Der einzige Unterschied zwischen diesem und dem oben genannten besteht darin, dass diese Methode dies während des Lesevorgangs tut. Oben haben wir es konvertiert, nachdem der Datenrahmen bereits erstellt wurde.

Ein weiteres Beispiel für die fehlerfreie Konvertierung des Datentyps einer Pandas-Serie in Python

Jetzt zeigen wir Ihnen einen weiteren Datensatz und ein weiteres Beispiel mit den Daten der Chipbestellungen.

CHIP_ORDERS = pd.read_table("http://bit.ly/chiporders")
CHIP_ORDERS.head()

Schauen wir uns die Säule an. Wir wollen uns auf die Spalte item_price konzentrieren.

Chip-Bestelldaten

CHIP_ORDERS.dtypes

Pandas speichert die Spalte item_price als Objekt, also als String, weil es nicht versteht, dass es sich um Zahlen handelt.

Datentypen der Chip-Order-Spalten

Um etwas Mathe damit zu machen, müssen wir ein Zeichen aus einer Reihe wie das $-Zeichen entfernen. Wir können die Methoden str und replace() verwenden, um das Dollarzeichen durch nichts zu ersetzen, aber das reicht nicht aus; Wenn wir versuchen, eine mathematische Operation auf die Reihe anzuwenden, erhalten Sie einen Fehler.

CHIP_ORDERS.item_price.str.replace("$", "").mean()

Ausgang:

ValueError: could not convert string to float: '2.39 3.39 3.39...

Denn obwohl wir das Dollarzeichen entfernt haben, ist es immer noch ein String, also müssen wir es in einen Float umwandeln. Nachdem wir es in einen Float umgewandelt haben, können wir eine mathematische Operation darauf ausführen.

CHIP_ORDERS.item_price.str.replace("$", "").astype(float).mean()

Ausgang:

Typumwandlung in Float mit astype

Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn

Verwandter Artikel - Python Error