Вы должны указать , считается ли столбец, который dtypeбыл object, но все элементы являются числовыми, как числовыми или нет. Если нет, возьмите ответ Ханана, он тоже быстрее. В противном случае возьмите мою.
FooBar
Что произойдет, если вы просто попробуете df.describe (). Columns. Затем присвойте его переменной.
холодный
Ответы:
146
Вы можете использовать select_dtypesметод DataFrame. Он включает два параметра: include и exclude. Итак, isNumeric будет выглядеть так:
Вы можете использовать df.select_dtypes (include = [np.number]), если вам не нужно указывать «числовой» список
KieranPC
23
Основываясь на подсказке из предыдущего комментария (+1), вы можете просто использовать list(df.select_dtypes(include=[np.number]).columns.values) для получения списка имен числовых столбцов
user799188,
77
Вы можете использовать недокументированную функцию _get_numeric_data()для фильтрации только числовых столбцов:
df._get_numeric_data()
Пример:
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
Обратите внимание, что это «частный метод» (т. Е. Деталь реализации), который может быть изменен или полностью удален в будущем. Используйте с осторожностью .
Нет, это нигде не задокументировано. Однако реализация здесь , как упоминал @ijoseph, я бы с осторожностью использовал методы, которые начинаются с подчеркивания, поскольку они не более чем детали реализации. Используйте буквально ЛЮБОЙ другой ответ, кроме этого.
cs95
Именно. В качестве наилучшей практики я стараюсь использовать и преобразовывать как можно больше методов numpy. Это связано с динамизмом панд. API часто меняется. Для недокументированных методов это просто безрассудство, независимо от того, насколько оно полезно.
mik
69
Простой однострочный ответ для создания нового фрейма данных только с числовыми столбцами:
вот marketing_trainмой набор данных и select_dtypes()функция для выбора типов данных с использованием аргументов exclude и include, а столбцы используются для извлечения имени столбца набора данных, вывод которого приведен выше:
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)
Здесь np.applymap(np.isreal)показывает, является ли каждая ячейка во фрейме данных числовой, и .axis(all=0)проверяет, все ли значения в столбце равны True, и возвращает серию логических значений, которые можно использовать для индексации нужных столбцов.
Таким образом вы можете проверить, является ли значение числовым, например, float и int или srting. второй оператор if используется для проверки строковых значений, на которые ссылается объект.
dtype
былobject
, но все элементы являются числовыми, как числовыми или нет. Если нет, возьмите ответ Ханана, он тоже быстрее. В противном случае возьмите мою.Ответы:
Вы можете использовать
select_dtypes
метод DataFrame. Он включает два параметра: include и exclude. Итак, isNumeric будет выглядеть так:источник
list(df.select_dtypes(include=[np.number]).columns.values)
для получения списка имен числовых столбцовВы можете использовать недокументированную функцию
_get_numeric_data()
для фильтрации только числовых столбцов:Пример:
Обратите внимание, что это «частный метод» (т. Е. Деталь реализации), который может быть изменен или полностью удален в будущем. Используйте с осторожностью .
источник
Простой однострочный ответ для создания нового фрейма данных только с числовыми столбцами:
Если вам нужны имена числовых столбцов:
Полный код:
источник
df.select_dtypes(include=['int64']).columns.tolist()
include=
.select_dtypes(np.number)
df.fillna(value=0, inplace=True)
источник
datetime
, чем числовые,Простой однострочный:
источник
Следующие коды вернут список имен числовых столбцов набора данных.
вот
marketing_train
мой набор данных иselect_dtypes()
функция для выбора типов данных с использованием аргументов exclude и include, а столбцы используются для извлечения имени столбца набора данных, вывод которого приведен выше:Спасибо
источник
Это еще один простой код для поиска числового столбца во фрейме данных pandas,
источник
источник
Адаптировав этот ответ , вы могли бы сделать
Здесь
np.applymap(np.isreal)
показывает, является ли каждая ячейка во фрейме данных числовой, и.axis(all=0)
проверяет, все ли значения в столбце равны True, и возвращает серию логических значений, которые можно использовать для индексации нужных столбцов.источник
Пожалуйста, посмотрите код ниже:
Таким образом вы можете проверить, является ли значение числовым, например, float и int или srting. второй оператор if используется для проверки строковых значений, на которые ссылается объект.
источник
Мы можем включать и исключать типы данных в соответствии с требованиями, указанными ниже:
Ссылка из Jupyter Notebook.
Чтобы выбрать все числовые типы, используйте
np.number
или'number'
Чтобы выбрать строки, вы должны использовать
object
dtype, но обратите внимание, что это вернет все столбцы dtype объектаСм.
NumPy dtype hierarchy <http://docs.scipy.org/doc/numpy/reference/arrays.scalars.html>
__Для выбора DateTimes, использование
np.datetime64
,'datetime'
или'datetime64'
Чтобы выбрать timedeltas, используйте
np.timedelta64
,'timedelta'
или'timedelta64'
Чтобы выбрать категориальные типы Pandas, используйте
'category'
Чтобы выбрать типы данных Pandas datetimetz, используйте
'datetimetz'
(новое в 0.20.0) или 'datetime64 [ns, tz]'источник