df
Angenommen , es handelt sich um einen Pandas DataFrame. Ich möchte alle Spalten vom numerischen Typ finden. Etwas wie:
isNumeric = is_numeric(df)
df
Angenommen , es handelt sich um einen Pandas DataFrame. Ich möchte alle Spalten vom numerischen Typ finden. Etwas wie:
isNumeric = is_numeric(df)
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:
numerics = ['int16', 'int32', 'int64', 'float16', 'float32', 'float64']
newdf = df.select_dtypes(include=numerics)
list(df.select_dtypes(include=[np.number]).columns.values)
eine Liste der Namen der numerischen Spalten
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
0 1 s
1 2 s
2 3 s
3 4 s
In [33]: data._get_numeric_data()
Out[33]:
A
0 1
1 2
2 3
3 4
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 .
Einfache einzeilige Antwort zum Erstellen eines neuen Datenrahmens mit nur numerischen Spalten:
df.select_dtypes(include=np.number)
Wenn Sie die Namen numerischer Spalten möchten:
df.select_dtypes(include=np.number).columns.tolist()
Vollständiger Code:
import pandas as pd
import numpy as np
df = pd.DataFrame({'A': range(7, 10),
'B': np.random.rand(3),
'C': ['foo','bar','baz'],
'D': ['who','what','when']})
df
# A B C D
# 0 7 0.704021 foo who
# 1 8 0.264025 bar what
# 2 9 0.230671 baz when
df_numerics_only = df.select_dtypes(include=np.number)
df_numerics_only
# A B
# 0 7 0.704021
# 1 8 0.264025
# 2 9 0.230671
colnames_numerics_only = df.select_dtypes(include=np.number).columns.tolist()
colnames_numerics_only
# ['A', 'B']
df.select_dtypes(include=['int64']).columns.tolist()
include=
. select_dtypes(np.number)
df.fillna(value=0, inplace=True)
Einfacher Einzeiler:
df.select_dtypes('number').columns
Die folgenden Codes geben eine Liste der Namen der numerischen Spalten eines Datensatzes zurück.
cnames=list(marketing_train.select_dtypes(exclude=['object']).columns)
Hier marketing_train
ist 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:
['custAge',
'campaign',
'pdays',
'previous',
'emp.var.rate',
'cons.price.idx',
'cons.conf.idx',
'euribor3m',
'nr.employed',
'pmonths',
'pastEmail']
Vielen Dank
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.
Bitte beachten Sie den folgenden Code:
if(dataset.select_dtypes(include=[np.number]).shape[1] > 0):
display(dataset.select_dtypes(include=[np.number]).describe())
if(dataset.select_dtypes(include=[np.object]).shape[1] > 0):
display(dataset.select_dtypes(include=[np.object]).describe())
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.
Wir können Datentypen gemäß der folgenden Anforderung ein- und ausschließen:
train.select_dtypes(include=None, exclude=None)
train.select_dtypes(include='number') #will include all the numeric types
Weitergeleitet von Jupyter Notebook.
Verwenden Sie oder, um alle numerischen Typen auszuwählennp.number
'number'
Um Zeichenfolgen auszuwählen, müssen Sie den object
dtype verwenden. Beachten Sie jedoch, dass dadurch alle dtype-Objektspalten zurückgegeben werden
Siehe 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.
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.