Sie sollten angeben, ob eine Spalte, die vorhanden dtypeist object, aber alle Elemente numerisch sind, als numerisch gilt oder nicht. Wenn nein, nimm Hanans Antwort, da sie auch schneller ist. Ansonsten nimm meine.
FooBar
Was passiert, wenn Sie einfach df.describe (). Columns ausprobieren? Ordnen Sie es dann einer Variablen zu.
kalt
Antworten:
146
Sie können die select_dtypesMethode von DataFrame verwenden. Es enthält zwei Parameter einschließen und ausschließen. IsNumeric würde also so aussehen:
Sie können df.select_dtypes (include = [np.number]) verwenden, wenn Sie keine '
numerische
23
Aufbauend auf dem Tipp im vorherigen Kommentar (+1) können Sie einfach list(df.select_dtypes(include=[np.number]).columns.values) eine Liste der Namen der numerischen Spalten
abrufen
76
Mit der Funktion ohne _get_numeric_data()Papiere können Sie nur numerische Spalten filtern:
df._get_numeric_data()
Beispiel:
In[32]: data
Out[32]:
A B
01 s
12 s
23 s
34 s
In[33]: data._get_numeric_data()Out[33]:
A
01122334
Beachten Sie, dass dies eine "private Methode" (dh ein Implementierungsdetail) ist und in Zukunft geändert oder vollständig entfernt werden kann. Mit Vorsicht verwenden .
Nein, das ist nirgendwo dokumentiert. Die Implementierung ist hier , wie bei @ijoseph erwähnt, würde ich jedoch vorsichtig sein, Methoden zu verwenden, die mit Unterstrichen beginnen, da sie kaum mehr als Implementierungsdetails sind. Verwenden Sie buchstäblich JEDE andere Antwort als diese.
CS95
Genau. Als Best Practice versuche ich, so viele Numpy-Methoden wie möglich zu verwenden und zu konvertieren. Dies ist auf die Dynamik der Pandas zurückzuführen. Die API ändert sich häufig. Für undokumentierte Methoden ist es einfach rücksichtslos, egal wie nützlich es ist.
Mik
69
Einfache einzeilige Antwort zum Erstellen eines neuen Datenrahmens mit nur numerischen Spalten:
Wenn Sie nur einen Typ möchten, müssen Sie ihn nicht in einer Liste speichern. Sie müssen auch nicht angeben include=. select_dtypes(np.number)
BallpointBen
Wenn Ihre Spalten numerische Daten enthalten, aber auch keine, kann der d-Typ "Objekt" sein. Dies wird die Spalten zu numerischen zwingen:df.fillna(value=0, inplace=True)
Hier marketing_trainist mein Datensatz und select_dtypes()die Funktion zum Auswählen von Datentypen mithilfe von Ausschluss- und Einschlussargumenten und Spalten zum Abrufen des Spaltennamens des Datensatzes. Die Ausgabe des obigen Codes lautet wie folgt:
def is_type(df, baseType):import numpy as np
import pandas as pd
test =[issubclass(np.dtype(d).type, baseType)for d in df.dtypes]return pd.DataFrame(data = test, index = df.columns, columns =["test"])def is_float(df):import numpy as np
return is_type(df, np.float)def is_number(df):import numpy as np
return is_type(df, np.number)def is_integer(df):import numpy as np
return is_type(df, np.integer)
Wenn Sie diese Antwort anpassen , können Sie dies tun
df.ix[:,df.applymap(np.isreal).all(axis=0)]
Hier wird angezeigt, np.applymap(np.isreal)ob jede Zelle im .axis(all=0)Datenrahmen numerisch ist, und es wird geprüft, ob alle Werte in einer Spalte True sind, und es wird eine Reihe von Booleschen Werten zurückgegeben, mit denen die gewünschten Spalten indiziert werden können.
Auf diese Weise können Sie überprüfen, ob die Werte numerisch sind, z. B. float und int oder die srting-Werte. Die zweite if-Anweisung wird zum Überprüfen der Zeichenfolgenwerte verwendet, auf die das Objekt verweist.
dtype
istobject
, aber alle Elemente numerisch sind, als numerisch gilt oder nicht. Wenn nein, nimm Hanans Antwort, da sie auch schneller ist. Ansonsten nimm meine.Antworten:
Sie können die
select_dtypes
Methode von DataFrame verwenden. Es enthält zwei Parameter einschließen und ausschließen. IsNumeric würde also so aussehen:quelle
list(df.select_dtypes(include=[np.number]).columns.values)
eine Liste der Namen der numerischen SpaltenMit der Funktion ohne
_get_numeric_data()
Papiere können Sie nur numerische Spalten filtern:Beispiel:
Beachten Sie, dass dies eine "private Methode" (dh ein Implementierungsdetail) ist und in Zukunft geändert oder vollständig entfernt werden kann. Mit Vorsicht verwenden .
quelle
Einfache einzeilige Antwort zum Erstellen eines neuen Datenrahmens mit nur numerischen Spalten:
Wenn Sie die Namen numerischer Spalten möchten:
Vollständiger Code:
quelle
df.select_dtypes(include=['int64']).columns.tolist()
include=
.select_dtypes(np.number)
df.fillna(value=0, inplace=True)
quelle
datetime
sind keine numerischen TypenEinfacher Einzeiler:
quelle
Die folgenden Codes geben eine Liste der Namen der numerischen Spalten eines Datensatzes zurück.
Hier
marketing_train
ist mein Datensatz undselect_dtypes()
die Funktion zum Auswählen von Datentypen mithilfe von Ausschluss- und Einschlussargumenten und Spalten zum Abrufen des Spaltennamens des Datensatzes. Die Ausgabe des obigen Codes lautet wie folgt:Vielen Dank
quelle
Dies ist ein weiterer einfacher Code zum Auffinden einer numerischen Spalte im Pandas-Datenrahmen.
quelle
quelle
Wenn Sie diese Antwort anpassen , können Sie dies tun
Hier wird angezeigt,
np.applymap(np.isreal)
ob jede Zelle im.axis(all=0)
Datenrahmen numerisch ist, und es wird geprüft, ob alle Werte in einer Spalte True sind, und es wird eine Reihe von Booleschen Werten zurückgegeben, mit denen die gewünschten Spalten indiziert werden können.quelle
Bitte beachten Sie den folgenden Code:
Auf diese Weise können Sie überprüfen, ob die Werte numerisch sind, z. B. float und int oder die srting-Werte. Die zweite if-Anweisung wird zum Überprüfen der Zeichenfolgenwerte verwendet, auf die das Objekt verweist.
quelle
Wir können Datentypen gemäß der folgenden Anforderung ein- und ausschließen:
Weitergeleitet von Jupyter Notebook.
Verwenden Sie oder, um alle numerischen Typen auszuwählen
np.number
'number'
Um Zeichenfolgen auszuwählen, müssen Sie den
object
dtype verwenden. Beachten Sie jedoch, dass dadurch alle dtype-Objektspalten zurückgegeben werdenSiehe
NumPy dtype hierarchy <http://docs.scipy.org/doc/numpy/reference/arrays.scalars.html>
__So wählen Sie Datetimes, Verwendung
np.datetime64
,'datetime'
oder'datetime64'
So wählen Sie timedeltas, Verwendung
np.timedelta64
,'timedelta'
oder'timedelta64'
Verwenden Sie zur Auswahl von Pandas kategorialen dtypes
'category'
Verwenden Sie
'datetimetz'
(neu in 0.20.0) oder `` 'datetime64 [ns, tz]', um Pandas datetimetz dtypes auszuwählen.quelle