NumPy

1

Análisis de Datos con NumPy y Pandas en Python

2

Manipulación de Dimensiones en Arrays NumPy para Ciencia de Datos

3

Manipulación de Arrays NumPy para Análisis de Datos en Python

4

Álgebra Lineal Aplicada con NumPy: Operaciones y Ejemplos Prácticos

5

Indexación y Slicing en NumPy para Análisis de Datos

6

Operaciones con Arrays en NumPy: Broadcasting, Concatenación y Más

7

Identificación y conteo de respuestas únicas con NumPy

8

Manipulación de Matrices y Arrays en NumPy: Transponer, Invertir y Aplanar

9

Análisis de Ventas Mensuales con NumPy: Transformaciones y Insights

10

Operaciones de Álgebra Lineal con NumPy en Python

11

Conexión de NumPy con Pandas y Matplotlib para Análisis de Datos

Pandas

12

Análisis de Datos con Pandas: Carga y Exploración de DataFrames

13

Creación de DataFrames con Pandas en Python

14

Análisis de Datos con Pandas: Series y DataFrames en RetailData

15

Selección de Datos en Pandas: Uso de iLoc y loc

16

Manejo de Datos Faltantes en Pandas: Identificación y Tratamiento

17

Transformaciones y Manipulación de Datos con Pandas en Python

18

Análisis de Ventas con Pandas: Agrupaciones y Estadísticas

19

Filtrado de Datos en Pandas para Análisis Efectivo

20

Creación y manejo de Pivot Tables en pandas

21

Fusión de DataFrames con Pandas: merge, concat y join

22

Análisis de Series Temporales en Ventas Retail

Matplotlib

23

Gráficos Básicos en Python con Matplotlib: Líneas y Dispersión

24

Personalización Avanzada de Gráficos en Matplotlib

25

Creación y Personalización de Gráficos con Matplotlib

26

Creación y personalización de histogramas y boxplots con Matplotlib

27

Visualización de Series Temporales con Python: Matplotlib y Pandas

28

Creación de Gráficos Combinados en Matplotlib con GridSpec

Proyecto de Análisis de Datos de Retail

29

Análisis de Datos con NumPy, Pandas y Matplotlib: Portafolio Final

30

Transformaciones de Datos para Análisis en Pandas

31

Visualización de Datos con Matplotlib: Gráficos de Barras y Pastel

32

Análisis de Datos con NumPy y Pandas en Proyectos Reales

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Indexación y Slicing en NumPy para Análisis de Datos

5/32
Recursos

Ejercicios para practicar Indexación y Slicing:

  1. Acceder a elementos específicos:
    • Crea un arreglo de 10 números y accede al cuarto y penúltimo elemento usando índices positivos y negativos.
  2. Slicing de arreglos:
    • Dado un arreglo de números del 1 al 20, extrae los elementos entre las posiciones 3 y 7, y luego los elementos de las últimas 5 posiciones.
  3. Indexing con booleanos:
    • Crea un arreglo de números aleatorios entre 0 y 100. Usa una expresión booleana para acceder solo a los números mayores a 50.
  4. Indexación con múltiples índices:
    • Dado un arreglo de 8 elementos, crea una lista de índices para acceder a los elementos en las posiciones 1, 4, y 6.
  5. Matrices bidimensionales:
    • Genera una matriz 4x4 de números aleatorios entre 10 y 50, y accede a la submatriz de 2x2 ubicada en la esquina inferior derecha.

 

Aportes 20

Preguntas 4

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

📝 Mis apuntes y ejercicios de la clase: **Indexación** Forma de acceder a los elementos de un array por medio de su índice. 📢 Los indices empiezan a partir del 0 que representa el primer elemento del array. ```python array = np.random.randint(5, 30, 20) print(array) print("Elemento en la posición 5:", array[4]) print("Elemento en la primer posición:", array[0]) print("Elemento en la última posición", array[-1]) print("Elemento en la ante última posición", array[-2]) ``` **Indexación booleana** Forma de obtener datos a partir de una condición. 📢 Todos los elementos que cumplan con la condición serán “devueltos”. ```python bool_index = array > 15 print("Array booleano:", bool_index) print("Elementos mayortes a 15:", array[bool_index]) print("Elementos entre 15 y 20:", array[(array >= 15 ) & (array <= 20)]) ``` **Indexación por listas** Permite obtener multiples elementos de un array con una lista de indices. 📢 Al mandarle indices “desordenados” el array resultante obtiene los elementos en el orden en que se pasó el índice centro de la lista. ```python index_list = [3,8,5,0] print("Elementos en las posiciones 3,8,5 y 0:", array[index_list]) print("Elementos en las posiciones -1, 2,3 y 5:", array[[-1,2,3, 5]]) ```**Indexación de arrays multidimensionales** Para acceder a un elemento de un array bidimensional, le indicamos 2 indices. 📢 `[indice_fila, indice_columna]` ```python matrix = np.random.randint(5, 30, (5,5)) matrix print("Elemento de la fila 2, columna 2:", matrix[2,2]) # Elemento especifio print("Elementos de las fila 1 y 2, columna 2:", matrix[[1,2],2]) # Indexaciónb por lista (1) print("Elementos en la fila 1 , columna 2, y fila 3, columna 2:", matrix[[1,2],[3,2]]) # Indexaciónb por lista (2) print("Elementos mayores a 18:", matrix[matrix > 18]) # Indexación booleana ``` **Slicing** Selección de sub-arrays, donde le indicamos el índice inicial e índice final del conjunto original. 📢 También se se pueden agregar “saltos”. ```python print("*"*5, "Array", "*"*5) print("Elementos desde el incio hasta la posición 3:", array[:3]) print("Elementos desde la posición 5 hasta el final:", array[5:]) print("Elementos desde la posición 5 hasta la posición 10:", array[5:10]) print("Elementos desde la posición hasta la penultima posición dando 2 saltos:", array[3:-2:2]) print("*"*5, "Matriz", "*"*5) print("Elementos a partir de la fila uno, y columnas a partir de la fila 2:\n", matrix[1:, 2:]) print("Elementos hasta la fila 3, y hasta la columna 2:\n", matrix[:3, :2]) print("Elementos a partir de la fila 1 dando 2 saltos, hasta la columna 1 dando 2 saltos\n",matrix[1::2, :1:2]) ```
\## Resumen \- Indexación Básica: Acceso a elementos individuales con índices enteros. \- Indexación con Listas y Booleana: Selección de múltiples elementos utilizando listas de índices o máscaras booleanas. \- Slicing: Selección de subarrays con notación de dos puntos, incluyendo pasos. \- Indexación en Arrays Multidimensionales: Aplicación de slicing y selección en cada dimensión. \- Indexación Avanzada: Selección de elementos arbitrarios utilizando arrays de índices y combinaciones de métodos. ![](https://static.platzi.com/media/user_upload/image-b394eaa5-fc82-4fc0-81be-1981f2d9541d.jpg)
Mis respuestas a los ejercicios ![](https://static.platzi.com/media/user_upload/image-29a5f0ed-5605-44c5-930f-91841fcc372a.jpg)
Cuando manejas grandes volúmenes de datos, es fundamental poder extraer información específica de manera eficiente sin necesidad de copiar grandes cantidades de datos. En esta lección, exploraremos cómo la **indexación** y el **slicing** en arrays permiten trabajar rápidamente con subconjuntos de datos. También practicaremos estas técnicas para reforzar conceptos. ### **1. ¿Qué es la indexación y el slicing?** * **Indexación**: Permite acceder a elementos específicos dentro de un array. * **Slicing**: Facilita la selección de subconjuntos de datos utilizando rangos. Ambas técnicas son útiles para trabajar de forma eficiente con datos en estructuras como los arrays de NumPy. ### **2. Ejemplo básico de indexación** En este ejemplo, utilizamos un array unidimensional: import numpy as np array = np.array(\[10, 20, 30, 40, 50]) print(array\[1])  # Accede al segundo elemento (índice 1) print(array\[-1]) # Accede al último elemento utilizando indexación negativa **Salidas**: * 20: Corresponde al elemento en el índice 1. * 50: Es el último elemento del array, accedido mediante -1. ### **3. Ejemplo de slicing** El slicing permite extraer subconjuntos de datos usando rangos: print(array\[1:4])  # Elementos desde el índice 1 al 3 print(array\[1:7])  # Intenta extraer del índice 1 al 6 (se detiene al final del array) print(array\[-1:-7]) # Intento de slicing negativo (devuelve array vacío) **Salidas**: * \[20 30 40]: Subconjunto desde el índice 1 hasta el 3 (excluye el índice 4). * \[20 30 40 50]: Se detiene en el final del array, ya que no hay índice 7. * \[]: La dirección del slicing negativo es incorrecta, resultando en un array vacío. ### **4. Indexación booleana** La indexación booleana permite seleccionar elementos que cumplen una condición específica: array = np.array(\[10, 20, 30, 40, 50]) bool\_index = array > 25 print(bool\_index)       # Array booleano con True/False según la condición print(type(bool\_index)) # Tipo del array resultante **Salidas**: * \[False False True True True]: Indica qué elementos son mayores a 25. * \<class 'numpy.ndarray'>: El resultado es un array booleano de NumPy. ### **5. Indexación avanzada (Fancy Indexing)** Podemos acceder a múltiples posiciones usando una lista de índices: index = \[2, 0, 3] print(array\[index])  # Elementos en las posiciones 2, 0 y 3 **Salida**: * \[30 10 40]: Los valores seleccionados según la lista de índices. ### **6. Trabajando con arrays multidimensionales** Los arrays de múltiples dimensiones requieren un formato más detallado para acceder a sus elementos: array = np.random.randint(1, 10, size=(3, 3)) print(array)         # Imprime el array 3x3 print(array\[0, 1])   # Accede al elemento en la fila 0, columna 1 **Salida** (puede variar por los valores aleatorios): * \[\[8 5 1] \[9 2 7] \[8 3 6]]: Ejemplo de un array 3x3 generado aleatoriamente. * 5: Valor en la fila 0, columna 1. ### **7. Extrayendo submatrices** Podemos seleccionar subconjuntos de una matriz mayor, creando submatrices: print(array\[:2, :2])  # Submatriz de las primeras 2 filas y columnas **Salida** (puede variar): * \[\[8 5] \[9 2]]: Una submatriz de 2x2 extraída del array original.
por fin ando entendiendo mejor los temas
Comparto mi solución a los ejercicios plantados en la clase, ignoren el nombre las variables XD: ![](https://static.platzi.com/media/user_upload/upload-0df2e71f-684c-4596-95b0-ada580c2cf8c.png) recuerden que en el ejercicio 5 primero se colocan las filas y luego las columnas para hacer el slicing: print(f\[2:,2:]), esto se traduciría en toma todos los datos de la fila 2 hasta el final y luego los datos de la columna 2 hasta el final dando como resultado la submatriz de 2x2 ubicada en la esquina inferior derecha.
![](https://static.platzi.com/media/user_upload/upload-93eb3280-79b8-4430-a7a4-581efdce9818.png)![]()
Excelente!!! una de las mejores Profes!
```python eje = np.arange(0, 10) print(eje) print(eje[-4]) eje2 = np.arange(1, 21) print(eje2) print(eje[3:7]) print(eje[3:7][:-5]) ```
mis respuestas a ejercicios 1\)array = np.array(\[99,32,58,234,3,46,74,92,122,593])n4 = array\[3]n9 = array\[8]print(f"Cuarto: {n4},  Penultimo: {n9}") 2\)array = np.array(\[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20])grupo37 = array\[2:7]grupou5 = array\[-5:]print(f"Grupo 3 al 7: {grupo37},  Ultimos 5: {grupou5}") \#)array = np.random.randint(0, 101, size=100 )print(array)bool\_array = array > 50print(bool\_array)num50 = array\[bool\_array]print(num50) 4\) array = np.array(\[1,2,3,4,5,6,7,8])index = \[0,3,5]newarray = array\[index]print(newarray) 5\)array = np.random.randint(10, 50, size=(4,4) )print(array)print(array\[2:,2:])
Para obtener de manera mas dinamica los elementos que cumplen cierta condicion podemos hacer bool\_index = array > 25 bool\_true\_indexes = np.where(bool\_index)\[0] # Esto nos regresara las posiciones donde es true \#Esas posiciones las podemos ocupar print(array\[bool\_true\_indexes])
```js #Ejercicios clase 5 array = np.random.randint(1, 25, size=(10)) print(array) print(array[3],array[8]) print(array[-7],array[-2]) #2 array = np.arange(1,21) print(array) print(array[2],array[6]) for i in range(len(array)): if array[i] > 15: print(array[i]) #3 array = np.random.randint(1, 100, size=(100)) bool_index = array > 50 print(array) size_2 = np.sum(bool_index) c = 0 array_2 = np.zeros(size_2, dtype=int) for i in range(len(array)): if bool_index[i]: array_2[c] = array[i] c += 1 print(array_2) #4 array = np.random.randint(1, 25, size=(8)) print(array) indices = [1,4,6] for i in range(len(indices)): print(array[indices[i]]) #5 array = np.random.randint(10, 50, size=(4,4)) print(array) sub_matrix= array[2:4,2:4] print(sub_matrix) ```Buenas noches, aporto mi solución para los ejercicios, no estoy seguro si entendí bien el #4, pero pues de una lista con los índices lo puse a iterar para así seleccionar los datos que necesitamos.
Para filtrar el array con indexacion booleana: ![](https://static.platzi.com/media/user_upload/image-adc52be4-c7b2-416a-a94b-be70469a9c9d.jpg)
donde estan los exercícios?...
Me ha gustado mucho el curso, la parte de los ejercicios me parece genial para practicar. A continuación dejo los ejercicios: arreglo=np.array(\[0,1,2,3,4,5,6,7,8,9])print(arreglo\[\[3,-2]]) arreglo2=np.array(\[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20])print(arreglo2\[2:7])print(arreglo2\[-5:]) arreglo100=np.random.randint(1,100,size=30)print(arreglo100)print(arreglo100\[arreglo100>50]) arreglo8=np.array(\[0,1,2,3,4,5,6,7])indeces=\[1,4,6]print(arreglo8\[indeces]) matrix4=np.random.randint(10,50,size=(4,4))print(matrix4)print(matrix4\[2:4,2:4])
<https://github.com/iecgerman/python-numpy-pandas/blob/master/clase05.ipynb>
![](https://static.platzi.com/media/user_upload/image-600abe6b-ef63-43b2-a9f7-c24f82175d74.jpg)
Por si a alguien les sirve de referencia, les comparto mi solucion a los ejercicios: ```python import numpy as np """# Ejercicios: **Acceder a elementos específicos:** * Crea un arreglo de 10 números y accede al cuarto y penúltimo elemento usando índices positivos y negativos. """ array1 = np.arange(1, 11) print("Cuarto elemento del array: ", array1[3]) print("Penultimo elemento del array: ", array1[-2]) """**Slicing de arreglos:** * Dado un arreglo de números del 1 al 20, extrae los elementos entre las posiciones 3 y 7, y luego los elementos de las últimas 5 posiciones. """ array2 = np.arange(1, 21) position1 = array2[3:7] position2 = array2[-5:] print(position1) print(position2) """**Indexing con booleanos:** * Crea un arreglo de números aleatorios entre 0 y 100. Usa una expresión booleana para acceder solo a los números mayores a 50. """ array3 = np.random.randint(0, 100, size=20) print(array3 > 50) """**Indexación con múltiples índices:** * Dado un arreglo de 8 elementos, crea una lista de índices para acceder a los elementos en las posiciones 1, 4, y 6. """ array4 = np.arange(1, 9) positions = [1,4,6] print(array4[positions]) """**Matrices bidimensionales:** * Genera una matriz 4x4 de números aleatorios entre 10 y 50, y accede a la submatriz de 2x2 ubicada en la esquina inferior derecha. """ matrix = np.random.randint(10, 50, size=(4,4)) submatrix = matrix[-2:, -2:] print(submatrix) ```import numpy as np """# Ejercicios: \*\*Acceder a elementos específicos:\*\* \* Crea un arreglo de 10 números y accede al cuarto y penúltimo elemento usando índices positivos y negativos. """ array1 = np.arange(1, 11) print("Cuarto elemento del array: ", array1\[3]) print("Penultimo elemento del array: ", array1\[-2]) """\*\*Slicing de arreglos:\*\* \* Dado un arreglo de números del 1 al 20, extrae los elementos entre las posiciones 3 y 7, y luego los elementos de las últimas 5 posiciones. """ array2 = np.arange(1, 21) position1 = array2\[3:7] position2 = array2\[-5:] print(position1) print(position2) """\*\*Indexing con booleanos:\*\* \* Crea un arreglo de números aleatorios entre 0 y 100. Usa una expresión booleana para acceder solo a los números mayores a 50. """ array3 = np.random.randint(0, 100, size=20) print(array3 > 50) """\*\*Indexación con múltiples índices:\*\* \* Dado un arreglo de 8 elementos, crea una lista de índices para acceder a los elementos en las posiciones 1, 4, y 6. """ array4 = np.arange(1, 9) positions = \[1,4,6] print(array4\[positions]) """\*\*Matrices bidimensionales:\*\* \* Genera una matriz 4x4 de números aleatorios entre 10 y 50, y accede a la submatriz de 2x2 ubicada en la esquina inferior derecha. """ matrix = np.random.randint(10, 50, size=(4,4)) submatrix = matrix\[-2:, -2:] print(submatrix)
Una pena que no tiene resumen escrito esta clase, ya venia con las clases anteriores usándolo como soporte y de repente lo sacan. Gracias a los compañeros que colaboran con sus resúmenes!!
Para los ejercicios solo bajen el archivoindexing\_slicing.ipynb, y si usan google colab, suban el archivo a google drive y abranlo con colab.