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:
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:
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:
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:
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_ORDERS.dtypes
Pandas speichert die Spalte item_price
als Objekt, also als String, weil es nicht versteht, dass es sich um Zahlen handelt.
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:
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.
LinkedInVerwandter Artikel - Python Error
- Adresse wird bereits verwendet Fehler in Python
- AttributeError: __Exit__ in Python
- AttributeError: 'Dict'-Objekt hat kein Attribut 'Append' in Python
- AttributeError: 'NoneType'-Objekt hat kein Attribut 'Text' in Python
- AttributeError: Int-Objekt hat kein Attribut
- AttributeError: Modul Urllib hat keine Attributanforderung