tutorial para instalar descargar como python python-3.x pandas

para - pandas python install



¿Cuáles son todos los tipos que los pandas reconocen? (2)

También está uint8.

Los documentos de Pandas en pandas.pydata.org/pandas-docs/stable/basics.html#dtypes tienen mucha más información.

Los principales tipos almacenados en los objetos de pandas son float, int, bool, datetime64 [ns], timedelta [ns] y object. Además, estos tipos de datos tienen tamaños de elementos, por ejemplo, int64 e int32.

Por defecto, los tipos enteros son int64 y los tipos flotantes son float64, SIN IMPORTAR la plataforma (32 bits o 64 bits). Todo lo siguiente resultará en dtypes int64.

Numpy, sin embargo, elegirá los tipos dependientes de la plataforma al crear matrices. Lo siguiente resultará en int32 en la plataforma de 32 bits.

Para pandas, ¿alguien lo sabría, si algún tipo de datos fuera de

(i) float64 , int64 (y otras variantes de np.number como float32 , int8 etc.)

(ii) bool

(iii) datetime64 , timedelta64

como columnas de cadena, siempre tiene un dtype de object ?

Alternativamente, quiero saber, si hay algún tipo de datos aparte de (i), (ii) y (iii) en la lista anterior, ¿qué pandas no hace que su tipo dtype un object ?


pandas toman prestados sus tipos de numpy . Para la demostración de esto ver lo siguiente:

import pandas as pd df = pd.DataFrame({''A'': [1,''C'',2.]}) df[''A''].dtype >>> dtype(''O'') type(df[''A''].dtype) >>> numpy.dtype

Puede encontrar la lista de numpy.dtypes válidos en la documentación :

''?'' booleano

byte ''b'' (firmado)

''B'' byte sin firmar

''i'' entero (con signo)

''u'' entero sin signo

punto flotante ''f''

''c'' complejo-punto flotante

''m'' timedelta

Fecha y hora ''M''

Objetos ''O'' (Python)

''S'', ''a'' bytes terminados en cero (no recomendado)

''U'' Unicode string

''V'' datos en bruto (nulo)

pandas deberían soportar estos tipos. El uso del método astype de un objeto pandas.Series con cualquiera de las opciones anteriores como argumento de entrada resultará en que los pandas intenten convertir la Series a ese tipo (o al menos volver al tipo de object ); ''u'' es el único que veo que los pandas no comprenden en absoluto:

df[''A''].astype(''u'') >>> TypeError: data type "u" not understood

Este es un error numpy que se debe a que la ''u'' debe ir seguida de un número que especifique el número de bytes por elemento en (que debe ser válido):

import numpy as np np.dtype(''u'') >>> TypeError: data type "u" not understood np.dtype(''u1'') >>> dtype(''uint8'') np.dtype(''u2'') >>> dtype(''uint16'') np.dtype(''u4'') >>> dtype(''uint32'') np.dtype(''u8'') >>> dtype(''uint64'') # testing another invalid argument np.dtype(''u3'') >>> TypeError: data type "u3" not understood

Para resumir, los métodos astype de los objetos pandas intentarán hacer algo sensato con cualquier argumento que sea válido para numpy.dtype . Tenga en cuenta que numpy.dtype(''f'') es igual que numpy.dtype(''float32'') y numpy.dtype(''f8'') es igual que numpy.dtype(''float64'') etc. Argumentos a los métodos astype .

Para ubicar las respectivas clases de tipos de datos en NumPy, los documentos de Pandas recomiendan esto:

def subdtypes(dtype): subs = dtype.__subclasses__() if not subs: return dtype return [dtype, [subdtypes(dt) for dt in subs]] subdtypes(np.generic)

Salida:

[numpy.generic, [[numpy.number, [[numpy.integer, [[numpy.signedinteger, [numpy.int8, numpy.int16, numpy.int32, numpy.int64, numpy.int64, numpy.timedelta64]], [numpy.unsignedinteger, [numpy.uint8, numpy.uint16, numpy.uint32, numpy.uint64, numpy.uint64]]]], [numpy.inexact, [[numpy.floating, [numpy.float16, numpy.float32, numpy.float64, numpy.float128]], [numpy.complexfloating, [numpy.complex64, numpy.complex128, numpy.complex256]]]]]], [numpy.flexible, [[numpy.character, [numpy.bytes_, numpy.str_]], [numpy.void, [numpy.record]]]], numpy.bool_, numpy.datetime64, numpy.object_]]

Pandas acepta estas clases como tipos válidos. Por ejemplo, dtype={''A'': np.float} .

NumPy docs contain más detalles y una tabla: