Ich habe eine .csv-Datei, die eine exportierte Ausgabe von einer Software ist. Diese CSV-Datei enthält viele NaNs. Ich muss die Daten analysieren, indem ich es in einen Datenrahmen lese, und dataframe.fillna(0)
verwenden, um alle NaNs durch 0 zu ersetzen. Wenn ich jedoch pandas.read_csv()
verwende, um diese CSV-Datei zu importieren, ist der Typ des Elements im Datenrahmen 'str' dataframe.fillna(0)
kann nicht verwendet werden. Meine Frage ist also: Wie konvertiert man das Element als np.float beim Lesen der .csv-Datei?Wie konvertiert man das Element in einem pandas.dataframe in np.float, während man pandas.read_csv benutzt, um die csv-Datei zu lesen?
Es ist ein Argument dtype
für pandas.read_csv
, hier ist die explantion:
dtype : Type name or dict of column -> type, default None
Data type for data or columns. E.g. {‘a’: np.float64, ‘b’: np.int32} Use str
or object to preserve and not interpret dtype. If converters are specified,
they will be applied INSTEAD of dtype conversion.
Alle Beispiele, wie es zu benutzen?
Vielen Dank!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
UPDATE:
Hier sind mehrere Lösungen von den Beantworter vorgeschlagen :
(1) von @Jakub. Wenn Sie na_values=NaN
in pandas.read_csv()
festlegen, können alle Elemente in der CSV-Datei in np.float
konvertiert werden, da sie in den Dataframe eingelesen werden.
(2) von @ André Christoffer Andersen. Nach dem Lesen der .csv-Datei als Datenframe. Verwenden Sie pandas.to_numeric
, um eine Spalte des Datenrahmens in np.float
zu konvertieren. Verwenden Sie eine for-Schleife, um alle Spalten in numerische umzuwandeln.
(3) von @ThisGuyCantEven. Verwenden Sie numpy.loadtxt
, um .csv-Datei in eine numpy.ndarray
zu lesen. Verwenden Sie das Argument skiprows
, um die Zeilen mit ungleichen Elementen zu überspringen. Verwenden Sie dann numpy.nan_to_num()
, um nan
in Nullen umzuwandeln.
Hoffentlich wird es folgenden Lesern helfen!
Sie können read_csv sagen, was die NaN-Werte mit dem Parameter 'na_values' sind. Das sollte diese Werte in np.nan umwandeln, die Sie dann wie gewohnt ersetzen können. – Jakub
Vielen Dank, @Jakub! Es wirkt wie ein Zauber! – Jundong