Para crear un array con un rango de datos podemos usar el método arange
np.arange(0,10)
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
LibrerÃas de manipulación de datos con Python
¿Por qué NumPy y Pandas?
NumPy
NumPy Array
Tipos de datos
Dimensiones
Creando arrays
Shape y Reshape
Funciones principales de NumPy
Copy
Condiciones
Operaciones
Quiz: NumPy
Pandas
Series y DataFrames en Pandas
Leer archivos CSV y JSON con Pandas
Filtrado con loc y iloc
Agregar o eliminar datos con Pandas
Manejo de datos nulos
Filtrado por condiciones
Funciones principales de Pandas
groupby
Combinando DataFrames
Merge y Concat
Join
Pivot y Melt
Apply
Quiz: Pandas
Cierre
Posibilidades con Pandas y NumPy
Aportes 20
Preguntas 3
Para crear un array con un rango de datos podemos usar el método arange
np.arange(0,10)
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
Los arrays de NumPy solo pueden contener un tipo de dato, ya que esto es lo que le confiere las ventajas de la optimización de memoria.
Podemos conocer el tipo de datos del array consultando la propiedad .dtype.
arr = np.array([1, 2, 3, 4])
arr.dtype
---> dtype('int64')
Si queremos usar otro tipo de dato lo podemos definir en la declaración del array.
arr = np.array([1, 2, 3, 4], dtype = 'float64')
arr.dtype
---> dtype('float64')
Ahora vemos que los valores están con punto decimal.
arr
---> array([1., 2., 3., 4.])
Si ya se tiene el array definido se usa el método .astype() para convertir el tipo de dato.
arr = np.array([1, 2, 3, 4])
arr = arr.astype(np.float64)
arr
---> array([1., 2., 3., 4.])
También se puede cambiar a tipo booleano recordando que los números diferentes de 0 se convierten en True.
arr = np.array([0, 1, 2, 3, 4])
arr = arr.astype(np.bool_)
arr
---> array([False, True, True, True, True])
También podemos convertir los datos en tipo string.
arr = np.array([0, 1, 2, 3, 4])
arr = arr.astype(np.string_)
arr
---> array([b'0', b'1', b'2', b'3', b'4'], dtype='|S21')
De igual forma se puede pasar de string a numero.
arr = np.array(['0', '1', '2', '3', '4'])
arr = arr.astype(np.int8)
arr
---> array([0, 1, 2, 3, 4], dtype=int8)
Si un elemento no es de tipo número el método falla.
arr = np.array(['hola','0', '1', '2', '3', '4'])
arr = arr.astype(np.int8)
arr
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-30-b9bb95861c7b> in <module>()
1 # DSi un elemento no es de tipo número el método falla.
2 arr = np.array(['hola','0', '1', '2', '3', '4'])
----> 3 arr = arr.astype(np.int8)
4 arr
ValueError: invalid literal for int() with base 10: 'hola'
El array de numpy solo puede tener un único tipo de datos en el cual va a trabajar. No puedo tener la mitad del array en int
y la otra mitad en bool
.
Hola,esto es util, linspace y arange, parecen iguales pero no lo son. En linspace en el tercer valor indicamos la cantidad de valores que iran en el intervalo , ademas nótese que linspace SI incluye el segundo valor que se coloca (10 en este ejemplo). En arange en el tercer valor indicamos de cuanto en cuanto irán saltanto, aquà NO toma el ultimo valor ( segundo valor que se da, 10 en este caso).
Para cambiar los tipos de datos de manera sencilla o consultarlos:
• .dtype: Para poder saber cuál es el tipo de dato está usando el array
• .astype: Para poder cambiar el tipo de dato qué está usando el array
EJERCICIO: Parto de una matriz 3D numpy array y voy cambiando el tipo de dato. Usando la función de NUMPY NBYTES veo cómo varÃa el tamaño en bytes de la matriz cuando le cambio el tipo de dato.
import numpy as np
npint64 = np.array([[[1,2,3], [4,5,6], [7,8,9]],[[11,12,13], [14,15,16],[17,18,19]],[[21,22,23], [24,25,26],[27,28,29]]])
npint64.dtype, npint64.nbytes
(dtype(‘int64’), 216)
npfloat16 = npint64.astype(np.float16)
npfloat16.dtype, npfloat16.nbytes
(dtype(‘float16’), 54)
npsingle = npint64.astype(np.single)
npsingle.dtype, npsingle.nbytes
(dtype(‘float32’), 108)
npdouble = npint64.astype(np.double)
npdouble.dtype, npdouble.nbytes
(dtype(‘float64’), 216)
npcdouble = npint64.astype(np.cdouble)
npcdouble.dtype, npcdouble.nbytes
(dtype(‘complex128’), 432)
int64
o int32
?La diferencia es la capacidad que pueden almacenar, en muchos casos cuando tenemos grandes bases de datos, necesitamos que nuestro modelo sea lo más rápido posible y dependiendo del tipo de dato que tengamos, se tardará más o menos tiempo
Fuente
👾
Siento que acabo de adquirir un nuevo superpoder. Es maravilloso este curso.
El numero que tiene al final del dtype es el número de bits que se asignaran a cada elemento, asà un float64 es una memoria de 64 bits asignada a cada item y que se tratará como un float. Esto es importante para cuestiones de presisión a más bits más información puedes guardar. Aquà un ejemplo de esto que saque de la documentación de Numpy
´´´
np.power(100, 8, dtype=np.int64) # Out: 10000000000000000
np.power(100, 8, dtype=np.int32) # Out: 1874919424
´´´
Es importante tener en cuenta esto porque puede que sea fuente de errores en tus cuentas si definiste que usarÃas 32 bits pero estás lidiando con datos que ameritarÃan usar 64 bits…
Los array solo pueden tener un único tipo de dato
Array = array.astype(np.float64) -> Cambiar a decimales
Array = array.astype(np.bool_)-> Cambiar a booleano
Array = array.astype(np.string_)-> Cambiar a texto string
Array = array.astype(np.int8_)-> Convierte números en formato texto a formato entero, resultará error de tener elementos con letras
use
.astype(np.str_)
y obtuve el array sin las b, min 5:35
VSC, virtual environment y numpy /
ImportError.
-> sol: renombrar tu archivo.
Este curso se pone cada vez más interesante 😎🥇🚀
ty por el notebook
arr = np.array([‘0’,‘1’,‘2’,‘3’,‘4’])
arr = arr.astype(np.double)
arr
Otra alternativa para cambio de tipo de dato:
in: a = np.array([1,2,3,4], dtype='int64')
in: a = a.astype('float')
in: a.dtype
out: dtype('float64')
Aunque podemos cambiar el array a diferentes tipos de datos. Lo que no se puede es cambiar parcialmente el tipo de dato. Es decir, no podrÃamos tener la mitad del array con un tipo de dato, y el resto con algún otro.
arr = np.arange(5, dtype = np.int8)
arr---> array([0, 1, 2, 3, 4])
np.float(arr)
arr---> array([0., 1., 2., 3., 4.])
¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.