Eu tenho um dataframe no pandas e estou tentando descobrir quais são os tipos de seus valores. Não tenho certeza de qual é o tipo de coluna 'Test'. No entanto, quando corro myFrame['Test'].dtype, consigo;
O primeiro caractere especifica o tipo de dados e os caracteres restantes especificam o número de bytes por item, exceto para Unicode, onde é interpretado como o número de caracteres. O tamanho do item deve corresponder a um tipo existente ou um erro será gerado. Os tipos suportados são para um tipo existente ou um erro será gerado. Os tipos suportados são:
'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)
Outra resposta ajuda se necessário, verifique type.
Você pode interpretar o último como Pandas dtype('O')ou objeto Pandas que é string do tipo Python, e isso corresponde a Numpy string_, ou unicode_tipos.
Pandas dtype Python type NumPy type Usage
object str string_, unicode_ Text
Como Don Quixote está na bunda, o Pandas está no Numpy e o Numpy entende a arquitetura subjacente do seu sistema e usa a classe numpy.dtypepara isso.
O objeto de tipo de dados é uma instância de numpy.dtypeclasse que entende o tipo de dados de forma mais precisa, incluindo:
Tipo de dados (inteiro, flutuante, objeto Python, etc.)
Tamanho dos dados (quantos bytes existem, por exemplo, o inteiro)
Ordem dos bytes dos dados (little-endian ou big-endian)
Se o tipo de dados for estruturado, um agregado de outros tipos de dados, (por exemplo, descrevendo um item de matriz consistindo em um inteiro e um flutuante)
Quais são os nomes dos "campos" da estrutura
Qual é o tipo de dados de cada campo
Qual parte do bloco de memória cada campo leva
Se o tipo de dados é uma submatriz, qual é sua forma e tipo de dados
No contexto desta questão dtypepertence a ambos pands e numpy e, em particular, dtype('O')significa que esperamos a string.
Aqui está algum código para teste com explicação: Se tivermos o conjunto de dados como dicionário
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)
As últimas linhas examinarão o dataframe e observarão a saída:
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
Todo tipo de diferente dtypes
df.iloc[1,:]= np.nan
df.iloc[2,:]=None
Mas se tentarmos definir np.nanou Noneisso não afetará o tipo de coluna original. A saída será assim:
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
Portanto, np.nanou Nonenão mudará as colunas dtype, a menos que definamos todas as linhas da coluna como np.nanou None. Nesse caso, a coluna se tornará float64ou objectrespectivamente.
Você também pode tentar definir linhas únicas:
df.iloc[3,:]=0# will convert datetime to object only
df.iloc[4,:]=''# will convert all columns to object
E para notar aqui, se definirmos string dentro de uma coluna não string, ela se tornará string ou objeto 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
A primeira linha retorna: dtype('O')
A linha com a instrução de impressão retorna o seguinte: object
pandas
usa livrementeobject
dtype quando as colunas contêm valores mistos (strings, números, nan).Respostas:
Isso significa:
Fonte .
Outra resposta ajuda se necessário, verifique
type
.fonte
Quando você vê
dtype('O')
dentro do dataframe, isso significa string Pandas.O que é
dtype
?Algo que pertence a
pandas
ounumpy
, ou ambos, ou outra coisa? Se examinarmos o código do pandas:A saída será assim:
Você pode interpretar o último como Pandas
dtype('O')
ou objeto Pandas que é string do tipo Python, e isso corresponde a Numpystring_
, ouunicode_
tipos.Como Don Quixote está na bunda, o Pandas está no Numpy e o Numpy entende a arquitetura subjacente do seu sistema e usa a classe
numpy.dtype
para isso.O objeto de tipo de dados é uma instância de
numpy.dtype
classe que entende o tipo de dados de forma mais precisa, incluindo:No contexto desta questão
dtype
pertence a ambos pands e numpy e, em particular,dtype('O')
significa que esperamos a string.Aqui está algum código para teste com explicação: Se tivermos o conjunto de dados como dicionário
As últimas linhas examinarão o dataframe e observarão a saída:
Todo tipo de diferente
dtypes
Mas se tentarmos definir
np.nan
ouNone
isso não afetará o tipo de coluna original. A saída será assim:Portanto,
np.nan
ouNone
não mudará as colunasdtype
, a menos que definamos todas as linhas da coluna comonp.nan
ouNone
. Nesse caso, a coluna se tornaráfloat64
ouobject
respectivamente.Você também pode tentar definir linhas únicas:
E para notar aqui, se definirmos string dentro de uma coluna não string, ela se tornará string ou objeto
dtype
.fonte
Significa "um objeto python", ou seja, não é um dos tipos escalares integrados suportados por numpy.
fonte
'O' significa objeto .
A primeira linha retorna:
dtype('O')
A linha com a instrução de impressão retorna o seguinte:
object
fonte