0% encontró este documento útil (0 votos)
5 vistas17 páginas

Ciencia de Datos: NumPy y Matplotlib

Ciencia de datos Phyton3
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
5 vistas17 páginas

Ciencia de Datos: NumPy y Matplotlib

Ciencia de datos Phyton3
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Ciencia de datos con Python

NumPy y MatPlotlib
José Ignacio Merino
Numpy
! Numpy es una librería científica de manejo de arrays y matrices
! Para instalarla:
! pip install numpy
! Esta librería no es pura Python y tiene algunas partes de código nativo. Esto puede dar algunos problemas en
determinados casos
! Para usarla
! import numpy as np
! El elemento clave de esta librería es un narray, el cual es igual que una lista en Python (en apariencia)
! Recuerda:
! Lista en Python: [1, 2, 3, 4] -> Se almacenan en distintos sitios. Cada elemento apunta al siguiente
! Array numpy: [Link]([1, 2, 3, 4]) -> Se almacenan de forma consecutiva
! Esto hace que las lecturas de un array numpy sean más rápidas que una lista Python (por eso se usa en ciencia de datos)
Numpy
! Numpy tiene arrays de 0 dimensiones:
! [Link](8)
! De 1 dimensión
! [Link]([1, 2, 3, 4])
! De 2 dimensiones
! [Link]([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]])
! De 3 dimensiones:
! …
! Con .ndim se obtiene la dimensión del array
! Con .shape se obtiene las dimensiones
Numpy
! Para acceder a los elementos en el array, igual que en Python
! valores = [Link]([1, 2, 3, 4])
! valores[0]
! valores[1:3]
! for valor in valores:
! print(valor)
! …
! Para acceder a valores de arrays multidimensionales
! valores2d = [Link]([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
! valores2d[1, 2] # 6
! for fila in valores2d:
! print("Fila: " + str(fila))
! for valorColumna in fila:
! print(valorColumna)
Numpy
! Podemos almacenar arrays de distintos tipos
! arrStrings = [Link](["uno", "dos", "tres"])
! [Link] #<U4 -> U: Cadena con codificación Unicode inferior a 4 caracteres máximo

! arrInts = [Link]([1, 2, 3])


! [Link] # int64
! No se puede mezclar distintos tipos de elementos (si hay un elemento string, convierte todos a string)
! arrMezcla = [Link]([1, "dos", 3])
! print([Link])
! print(arrMezcla[1])
! Puedo convertir con .astype
! arrFloat = [Link]([1, 2, 3]).astype("float")
! print([Link])
! print(arrFloat[0])
Numpy
! Si hago una asignación, las modificaciones se ven afectadas
! arr = [Link]([1, 2, 3, 4])
! copia = arr
! copia[0] = 8
! print(arr) # 8
! Puedo copiar un array y las operaciones no se verán afectadas
! arr = [Link]([1, 2, 3, 4])
! copia = [Link]()
! copia[0] = 8
! print(arr) # 1
Numpy
! Puedo cambiar de una matriz a otra
! arr = [Link]([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
! print(arr)
! print([Link](3,4)) # Matriz de 3x4
! print([Link](4,3)) # Matriz de 4x3
! print([Link](2,-1)) # Matriz de 2xlo que de (2x6)
! print([Link](-1, 2)) # Matriz de lo que dex2 (6x2)
! print([Link](2, 3, -1)) # Matriz de 2x3xlo que de (2x3x2)
! Lo que no puedo hacer es buscar una matriz de 5x (porque 12 no es divisible entre 5)
! [Link](5, -1) # error
! Tan sólo puedo poner una dimensión como desconocida
! [Link](2, -1, -1) # error
Numpy
! Para pasar a una dimensión lineal .reshape(-1)
! [Link](3, 4).reshape(12) # Haz un array con 12 elementos
! [Link](3, 4).reshape(-1) # Haz un array con 12 elementos
! Realmente, un array con reshape() es una referencia al original
! [Link](3, 4).base
! Para unir arrays
! [Link]((arr, arr)) # es importante el doble paréntesis
! [Link](([Link](3, 4), [Link](3, 4)), axis=0) # Matrix 6x4. Concatena en columnas
! [Link](([Link](3, 4), [Link](3, 4)), axis=1) # Matrix 3x8. Concatena en filas
Numpy
! Para dividir arrays
! np.array_split(arr, 4) # Obtiene 4 arrays de 3 elementos
! Para buscar elementos
! [Link](arr == 3)
! Para ordenar elementos
! [Link](arr)
! No, no hay ordenación descendente
! [Link](arr)[::-1]
! [Link]([Link](arr))
Numpy
! Como buena librería científica puede:
! Obtener números aleatorios
! from numpy import random
! [Link](1000)
! Obtener números aleatorios distribuidos de forma normal
! [Link](5, 2, size=(10)) # 10 números distribuidos con media 5 y desviación 2
! [Link](size=(2, 3))
! Obtener otro tipo de distribuciones (logística, binomial, poisson, …)
! Obtener funciones matemáticas (trigonométricas, logaritmos, …)
MatPlotlib
! Es una librería gráfica
! Pandas la usa a nivel interno cuando se hace .plot(), .hist(), …
! Instalación
! pip install matplotlib
! La librería básica es pyplot
! from matplotlib import pyplot as plt
! [Link]([1, 2, 3], [2, 4, 10])
! [Link]([1, 2, 3], [2, 4, 10], marker="o")
! [Link]([1, 2, 3], [2, 4, 10], marker="*")
! [Link]([1, 2, 3], [2, 4, 10], marker="x")
MatPlotlib
! Es una librería gráfica
! Pandas la usa a nivel interno cuando se hace .plot(), .hist(), …
! Instalación
! pip install matplotlib
! La librería básica es pyplot
! from matplotlib import pyplot as plt
! [Link]([1, 2, 3], [2, 4, 10])
! [Link]([1, 2, 3], [2, 4, 10], marker="o")
! [Link]([1, 2, 3], [2, 4, 10], marker="*")
! [Link]([1, 2, 3], [2, 4, 10], marker="x")
MatPlotlib
! datosElectricos = pd.read_csv("[Link]
Brutos_Ago2022.csv", encoding = "ISO-8859-1", skiprows=3, sep=";", decimal=“,")
! Como se puede ver, Pandas usa Matplotlib por defecto
! datosElectricos["OTR_PRI"].plot()
! [Link](datosElectricos["OTR_PRI"])
! datosElectricos["OTR_PRI"].plot(marker="*")
! Podemos hacer modificaciones al gráfico
! datosElectricos["OTR_PRI"].plot(marker="*", ms = 20, mec = "green", mfc = "red")
! Cuidado, en realidad está dibujando x=índice, y=value
! datosElectricos.sort_values(by="OTR_EXTR")["OTR_PRI"].plot()
! Si queremos dibujar un gráfico (x,y) con los índices desordenados, usar .values
! datosElectricos.sort_values(by="OTR_EXTR")["OTR_PRI"].[Link]() # error
! [Link](datosElectricos.sort_values(by="OTR_EXTR")["OTR_PRI"].values) # ok
MatPlotlib
! Podemos mezclar distintos tipos de gráficos (símplemente hay que ponerlos en el mismo cuadro)
! [Link]("Gráfico de consumo")
! [Link]("Mes (inicio Enero 2009)")
! [Link]("Consumo eléctrico")
! [Link](datosElectricos["OTR_PRI"], linestyle="dotted", label="PRIMARIO")
! datosElectricos["OTR_EXTR"].plot()
! [Link]()
! Como se ve, podemos mezclar notación de Panda y de Matplotlib
! Para la leyenda, hay que añadir un label
! Si usamos la notación de Pandas, el label se lo añade Pandas automáticamente
! O también podríamos indicar qué queremos que vaya en la leyenda
! [Link]([“serie 1”, “serie 2”])
MatPlotlib
! Podemos dibujar gráficos en la misma columna
! [Link](2, 1, 1) # 2 columnas, 1 línea y el gráfico va en la posición 1
! [Link](datosElectricos["OTR_PRI"], linestyle="dotted", label="PRIMARIO")
! [Link](2, 1, 2) # 2 columnas, 1 línea y el gráfico va en la posición 2
! datosElectricos["OTR_EXTR"].plot()
! O en la misma línea
! [Link](1, 2, 1) # 1 columna, 2 líneas y el gráfico va en la posición 1
! [Link](datosElectricos["OTR_PRI"], linestyle="dotted", label="PRIMARIO")
! [Link](1, 2, 2) # 1 columna, 2 líneas y el gráfico va en la posición 1
! datosElectricos["OTR_EXTR"].plot()
MatPlotlib
! También podemos hacer gráficos (x,y)
! [Link](datosElectricos["OTR_PRI"], datosElectricos["OTR_EXTR"])
! O de burbujas
! [Link](datosElectricos["OTR_PRI"], datosElectricos["OTR_EXTR"], s=[Link])
! Gráficos de barras
! [Link](x=datosElectricos["Grupo"][:20], height=datosElectricos["OTR_PRI"][:20])
! O de barras horizontales
! [Link](y=datosElectricos["Grupo"][:20], width=datosElectricos["OTR_PRI"][:20])
! Y los histogramas
! [Link](datosElectricos["OTR_EXTR"])
@AvanteFormación
@AvanteTIC
Avante
Avante Formación

También podría gustarte