У меня есть фрейм данных в пандах, и я пытаюсь выяснить, каковы типы его значений. Я не уверен, что это за столбец 'Test'. Однако когда я бегу myFrame['Test'].dtype, я получаю;
Первый символ указывает тип данных, а остальные символы определяют количество байтов на элемент, за исключением Unicode, где он интерпретируется как количество символов. Размер элемента должен соответствовать существующему типу, в противном случае возникнет ошибка. Поддерживаемые типы относятся к существующему типу, в противном случае возникнет ошибка. Поддерживаемые типы:
'b' boolean'i'(signed) integer'u' unsigned integer'f' floating-point'c' complex-floating point'O'(Python) objects'S','a'(byte-)string'U'Unicode'V' raw data (void)
Вы можете интерпретировать последний как dtype('O')объект Pandas или Pandas, который является строкой типа Python, и это соответствует Numpy string_или unicode_типам.
Pandas dtype Python type NumPy type Usage
object str string_, unicode_ Text
Как Дон Кихот на заднице, Pandas на Numpy, а Numpy понимает базовую архитектуру вашей системы и использует numpy.dtypeдля этого класс .
Объект типа данных - это экземпляр numpy.dtypeкласса, который более точно понимает тип данных, включая:
Тип данных (целое число, число с плавающей запятой, объект Python и т. Д.)
Размер данных (сколько байтов, например, целое число)
Порядок байтов данных (прямой или прямой порядок байтов)
Если тип данных структурированный, совокупность других типов данных (например, описание элемента массива, состоящего из целого числа и числа с плавающей запятой)
Как называются «поля» структуры
Каков тип данных каждого поля
Какую часть блока памяти занимает каждое поле
Если тип данных является подмассивом, каковы его форма и тип данных
В контексте этого вопроса dtypeотносится как к pands, так и к numpy, и, в частности, dtype('O')означает, что мы ожидаем строку.
Вот код для тестирования с объяснением: Если у нас есть набор данных в виде словаря
import pandas as pd
import numpy as np
from pandas importTimestamp
data={'id':{0:1,1:2,2:3,3:4,4:5},'date':{0:Timestamp('2018-12-12 00:00:00'),1:Timestamp('2018-12-12 00:00:00'),2:Timestamp('2018-12-12 00:00:00'),3:Timestamp('2018-12-12 00:00:00'),4:Timestamp('2018-12-12 00:00:00')},'role':{0:'Support',1:'Marketing',2:'Business Development',3:'Sales',4:'Engineering'},'num':{0:123,1:234,2:345,3:456,4:567},'fnum':{0:3.14,1:2.14,2:-0.14,3:41.3,4:3.14}}
df = pd.DataFrame.from_dict(data)#now we have a dataframeprint(df)print(df.dtypes)
Последние строки исследуют фрейм данных и отмечают вывод:
id date role num fnum
012018-12-12Support1233.14122018-12-12Marketing2342.14232018-12-12BusinessDevelopment345-0.14342018-12-12Sales45641.30452018-12-12Engineering5673.14
id int64
date datetime64[ns]
role object
num int64
fnum float64
dtype: object
Все разные dtypes
df.iloc[1,:]= np.nan
df.iloc[2,:]=None
Но если мы попытаемся установить np.nanили Noneэто не повлияет на исходный столбец dtype. Результат будет таким:
print(df)print(df.dtypes)
id date role num fnum
01.02018-12-12Support123.03.141NaNNaTNaNNaNNaN2NaNNaTNoneNaNNaN34.02018-12-12Sales456.041.3045.02018-12-12Engineering567.03.14
id float64
date datetime64[ns]
role object
num float64
fnum float64
dtype: object
Таким образом np.nanили Noneне будет изменять столбцы dtype, если мы не установим для всех строк столбца значение np.nanили None. В этом случае столбец станет float64или objectсоответственно.
Вы также можете попробовать установить отдельные строки:
df.iloc[3,:]=0# will convert datetime to object only
df.iloc[4,:]=''# will convert all columns to object
И здесь следует отметить, что если мы установим строку внутри столбца, отличного от строки, она станет строкой или объектом dtype.
#Loading a csv file as a dataframeimport pandas as pd
train_df = pd.read_csv('train.csv')
col_name ='Name of Employee'#Checking the datatype of column name
train_df[col_name].dtype
#Instead try printing the same thingprint train_df[col_name].dtype
Первая строка возвращает: dtype('O')
Строка с оператором печати возвращает следующее: object
pandas
свободно используетobject
dtype, когда столбцы содержат смешанные значения (строки, числа, nan).Ответы:
Это значит:
Источник .
Другой ответ поможет, если нужно проверить
type
s.источник
Когда вы видите
dtype('O')
внутри фрейма данных, это означает строку Pandas.Что есть
dtype
?Что-то, что принадлежит
pandas
илиnumpy
, или обоим, или чему-то еще? Если мы рассмотрим код pandas:Это будет выглядеть так:
Вы можете интерпретировать последний как
dtype('O')
объект Pandas или Pandas, который является строкой типа Python, и это соответствует Numpystring_
илиunicode_
типам.Как Дон Кихот на заднице, Pandas на Numpy, а Numpy понимает базовую архитектуру вашей системы и использует
numpy.dtype
для этого класс .Объект типа данных - это экземпляр
numpy.dtype
класса, который более точно понимает тип данных, включая:В контексте этого вопроса
dtype
относится как к pands, так и к numpy, и, в частности,dtype('O')
означает, что мы ожидаем строку.Вот код для тестирования с объяснением: Если у нас есть набор данных в виде словаря
Последние строки исследуют фрейм данных и отмечают вывод:
Все разные
dtypes
Но если мы попытаемся установить
np.nan
илиNone
это не повлияет на исходный столбец dtype. Результат будет таким:Таким образом
np.nan
илиNone
не будет изменять столбцыdtype
, если мы не установим для всех строк столбца значениеnp.nan
илиNone
. В этом случае столбец станетfloat64
илиobject
соответственно.Вы также можете попробовать установить отдельные строки:
И здесь следует отметить, что если мы установим строку внутри столбца, отличного от строки, она станет строкой или объектом
dtype
.источник
Это означает «объект Python», то есть не один из встроенных скалярных типов, поддерживаемых numpy.
источник
«О» означает объект .
Первая строка возвращает:
dtype('O')
Строка с оператором печати возвращает следующее:
object
источник