0% encontró este documento útil (0 votos)
2 vistas62 páginas

Herramientas de Análisis de Datos en Python

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)
2 vistas62 páginas

Herramientas de Análisis de Datos en Python

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

Bootcamp Inteligencia Artificial

Nivel Explorador

Semana 12: Herramientas para análisis de datos y


Análisis exploratorio de datos

Introducción a Numpy, Introducción a Pandas,


Visualización de datos
Agenda
1. Numpy
2. Pandas
3. Matplotlib
1.1 Numpy
• Siglas de Numerical Python
• Es el paquete fundamental necesario para la computación de alto rendimiento y el análisis de datos
• NumPy es tan importante para los cálculos numéricos en Python es porque está diseñado para la eficiencia en
grandes matrices de datos.
Proporciona:
• ndarray para crear matrices multidimensionales
• Almacena internamente los datos en un bloque contiguo de memoria, independiente de otros objetos
incorporados de Python, utiliza mucha menos memoria que las secuencias incorporadas de Python.
• Funciones matemáticas estándar para operaciones rápidas en arrays enteros de datos sin tener que escribir
bucles
• Los Arrays de NumPy son importantes porque permiten expresar operaciones por lotes sobre datos sin tener
que escribir ningún bucle for. A esto lo llamamos vectorización.
1.2 Numpy vs Listas
• Una de las características clave de NumPy es su objeto array N-dimensional, o ndarray, que es un contenedor
rápido y flexible para grandes conjuntos de datos en Python.
• Siempre que veas "array", "NumPy array" o "ndarray" en el texto, con pocas excepciones, todos se refieren a lo
mismo: el objeto ndarray.
• Los algoritmos basados en NumPy suelen ser entre 10 y 100 veces más rápidos (o más) que sus equivalentes en
Python puro y utilizan mucha menos memoria.

• importar numpy como np


• mi_array = [Link](1000000)
• mi_lista = lista(rango(1000000))
1.3 ndarray
• ndarray se utiliza para almacenar datos homogéneos
• es decir, todos los elementos del mismo tipo
• Cada array debe tener una forma y un dtype
• Permite realizar cómodamente cortes, indexaciones y cálculos vectoriales eficientes.

import numpy as np
data1 = [6, 7.5, 8, 0, 1]
arr1 = [Link](data1)
print(arr1)
print([Link])
print([Link])
print([Link])
1.4 Creando ndarray
Usando lista de listas

import numpy as np

data2 = [[1, 2, 3, 4], [5, 6, 7, 8]] #list of lists


arr2 = [Link](data2)
print([Link]) #2
print([Link]) # (2,4)
1.5 Creando ndarray
arange es una versión con valores de matriz de la función incorporada range de Python
array = [Link](3)
array = [Link]([[0,1,2],[2,3,4]])
[[1. 0. 0.]
[[0 1 2]
[0. 1. 0.]
[2 3 4]]
[0. 0. 1.]]
array = [Link]((2,3))
array = [Link](0, 10, 2)
[[0. 0. 0.]
[0, 2, 4, 6, 8]
[0. 0. 0.]]
array = [Link](0,
array = [Link]((2,3))
10, (3,3))
[[1. 1. 1.]
[[6 4 3]
[1. 1. 1.]]
[1 5 6]
[9 8 5]]
1.6 Aritmética con matrices NumPy
Cualquier operación aritmética entre matrices de igual tamaño aplica la operación elemento a elemento

arr = [Link]([[1., 2., 3.], [4., 5., 6.]])


print(arr)
[[1. 2. 3.]
[4. 5. 6.]]

print(arr * arr)
[[ 1. 4. 9.]
[16. 25. 36.]]

print(arr - arr)
[[0. 0. 0.]
[0. 0. 0.]]
1.7 Aritmética con matrices NumPy
Las operaciones aritméticas con escalares propagan el argumento escalar a cada elemento de la matriz:
arr = [Link]([[1., 2., 3.], [4., 5., 6.]])
print(arr)
[[1. 2. 3.]
[4. 5. 6.]]

print(arr **2)
[[ 1. 4. 9.]
[16. 25. 36.]]

Las comparaciones entre matrices del mismo tamaño producen matrices booleanas:
arr2 = [Link]([[0., 4., 1.], [7., 2., 12.]])
print(arr2)
[[ 0. 4. 1.]
[ 7. 2. 12.]]

print(arr2 > arr)


[[False True False]
[ True False True]]
1.8 Indexación y segmentación
Las matrices unidimensionales son sencillas; a primera vista, actúan de forma similar a las listas de Python:

arr = [Link](10)
print(arr) # [0 1 2 3 4 5 6 7 8 9]
print(arr[5]) #5
print(arr[5:8]) #[5 6 7]
arr[5:8] = 12
print(arr) #[ 0 1 2 3 4 12 12 12 8 9]
1.9 Indexación y segmentación
• Como puedes ver, si asignas un valor escalar a una porción, como en arr[5:8] = 12, el valor se propaga (o
difunde) a toda la selección.
• Una primera distinción importante respecto a las listas incorporadas de Python es que las rebanadas de array son
vistas sobre el array original.
• Esto significa que los datos no se copian, y cualquier modificación en la vista se reflejará en la matriz de origen.

arr = [Link](10)
print(arr) # [0 1 2 3 4 5 6 7 8 9]

arr_slice = arr[5:8]
print(arr_slice) # [5 6 7]
arr_slice[1] = 12345
print(arr) # [ 0 1 2 3 4
5 12345 7 8 9]
arr_slice[:] = 64
print(arr) # [ 0 1 2 3 4 64 64 64 8 9]
1.10 Indexación
• En una matriz bidimensional, los elementos de cada índice ya no son escalares, sino matrices unidimensionales:
arr2d = [Link]([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(arr2d[2]) # [7 8 9]

• Así, se puede acceder a elementos individuales de forma recursiva. Pero eso es demasiado trabajo, así que
puedes pasar una lista de índices separados por comas para seleccionar elementos individuales.
• Son equivalentes a

print(arr2d[0][2]) # 3
print(arr2d[0, 2]) #3
1.11 Ejercicio
• Consideremos la matriz bidimensional arr2d.
arr2d = [Link]([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

• Escriba un código para cortar esta matriz para mostrar la última columna
[[3] [6] [9]]

• Escribe un código que corte este array para mostrar los 2 últimos elementos del array central
[5 6]
2.1 Por qué Pandas
• Una de las bibliotecas más populares que utilizan los científicos de datos
• Ejes etiquetados para evitar la desalineación de los datos
• Al fusionar dos tablas, algunas filas pueden ser diferentes
• Puede ser necesario eliminar o sustituir valores que faltan o valores especiales
height Weight Weight2 age Gender salary Credit score
Amy 160 125 126 32 2 Alice 50000 700
Bob 170 167 155 -1 1 Bob NA 670
Chris 168 143 150 28 1 Chris 60000 NA
David 190 182 NA 42 1 David -99999 750
Ella 175 133 138 23 2 Ella 70000 685
Frank 172 150 148 45 1 Tom 45000 660
2.1 Visión General
• Creado por Wes McKinney en 2008, ahora mantenido por muchos otros.
• Autor de uno de los libros de texto Python for Data Analysis
• Potente y productiva biblioteca de análisis y gestión de datos en Python
• Sistema de datos de panel
• El nombre se deriva del término "datos de panel", un término econométrico para conjuntos de datos que incluyen
tanto series temporales como datos transversales.
• Es un producto de código abierto.
2.2 Visión General
• Librería Python para proporcionar características de análisis de datos similares a: R, MATLAB, SAS
• Ricas estructuras de datos y funciones para hacer el trabajo con estructura de datos rápido, fácil y expresivo.
• Está construida sobre NumPy
• Componentes clave proporcionados por Pandas:
• Series
• DataFrame

A partir de ahora:
from pandas import Series, DataFrame
import pandas as pd
2.3 Series
• Objeto tipo array unidimensional
• Contiene un array de datos (de cualquier tipo de datos NumPy) con índices asociados. (Los índices pueden ser
cadenas o enteros u otros tipos de datos).
• Por defecto , las series tendrán índices de 0 a N donde N = tamaño -1

from pandas import Series, #Output


DataFrame 0 4
import pandas as pd 1 7
2 -5
obj = Series([4, 7, -5, 3]) 3 3
print(obj) dtype: int64
print([Link]) RangeIndex(start=0, stop=4,
print([Link]) step=1)
[ 4 7 -5 3]
2.4 Series - Elementos de referencia
obj2 = Series([4, 7, -5, 3], index=['d',
'b', 'a', 'c'])
print(obj2) obj2['d']= 10
#Output print(obj2[['d', 'c',
d 4 'a']])
b 7 #Output
a -5 d 10
c 3 c 3
dtype: int64 a -5
dtype: int64
print([Link])
#Output print(obj2[:2])
Index(['d', 'b', 'a', 'c'], #Output
dtype='object') d 10
b 7
print([Link]) dtype: int64
#Output
[ 4 7 -5 3] print(obj2.a)
#Output
print(obj2['a']) -5
#Output
2.5 Series - operaciones array/dict
Puede considerarse un dict. Puede construirse directamente a partir de un dict.

obj3 = Series({'d': 4, 'b': 7, 'a': obj4 = obj3[obj3>0]


print(obj4)
-5, 'c':3 }) #output
print(obj3) También se pueden aplicar d 10
#output operaciones de matriz b 7
d 4 numpy, que conservarán el c 3
dtype: int64
b 7 vínculo índice-valor
a -5 print(obj3**2)
c 3 #output
d 100
dtype: int64 b 49
a 25
c 9
dtype: int64

print(‘b’ in obj3)
#output
true
2.6 Series – desde un diccionario
print([Link](obj4))
#output
Texas False
Ohio False
sdata = {'Texas': 10, 'Ohio': 20, 'Oregon': 15, Oregon False
'Utah': 18} Iowa True
states = ['Texas', 'Ohio', 'Oregon', 'Iowa'] dtype: bool
obj4 = Series(sdata, index=states)
print(obj4) print([Link](obj4))
#output
#output
Texas True
Texas 10.0 Ohio True
Ohio 20.0 Oregon True
Oregon 15.0 Iowa False
Iowa NaN dtype: bool
dtype: float64
print(obj4[[Link]
()])
#output
Texas 10.0
Ohio 20.0
Oregon 15.0
dtype: float64
2.7 Series – nombre y nombre del índice
sdata = {'Texas': 10, 'Ohio': 20, 'Oregon': 15, 'Utah': 18}
states = ['Texas', 'Ohio', 'Oregon', 'Iowa']
obj4 = Series(sdata, index=states)
[Link] = 'population'
[Link] = 'state'
print(obj4)
#output
state
Texas 10.0
Ohio 20.0
Oregon 15.0
Iowa NaN
Name: population, dtype: float64
2.8 Series – nombre y nombre del índice
El índice de una serie puede cambiarse a un índice diferente.
[Link] = ['Florida', 'New York', 'Kentucky', 'Georgia']
Florida 10.0
New York 20.0
Kentucky 15.0
Georgia NaN
Name: population, dtype: float64

El propio objeto índice es inmutable.

[Link][2]='California’
TypeError: Index does not support mutable operations

print([Link])
Index(['Florida', 'New York', 'Kentucky', 'Georgia'], dtype='object')
2.9 Indexación, selección y filtrado
Las series se pueden dividir/acceder con índices basados en etiquetas, o utilizando índices basados en posiciones.

S = Series(range(4), index=['zero', 'one', 'two',


'three'])
print(S['two'])
2
print(S[['zero', 'two']])
zero 0
two 2
dtype: int64
print(S[2])
2
print(S[[0,2]])
zero 0
two 2
dtype: int64
operador de lista para elementos >1
2.10 Indexación, selección y filtrado
Las series se pueden dividir/acceder con índices basados en etiquetas, o utilizando índices basados en posiciones.

S = Series(range(4), index=['zero', 'one', 'two',


'three'])
print(S[:2])
zero 0
one 1 print(S[S > 1])
dtype: int32 two 2
three 3
print(S['zero': 'two']) dtype: int32
zero 0
one 1 print(S[-2:])
two 2 two 2
dtype: int32 three 3
dtype: int32
2.11 Ejercicio
Crear una lista aleatoria de 10 enteros en el rango de 1 a 100
Genere una serie utilizando la lista anterior con valores de índice de 1 a 10

• Nombre su serie "Números aleatorios


• Nombra tu índice "idx".

Ahora genere los Cuadrados de todos los valores de la Serie

• Muestre los 4 últimos elementos de esta serie


• También muestre todos los números >500 como una lista (sin el índice)
2.12 Data Frame
• Un DataFrame es una estructura tabular de datos compuesta por filas y columnas, similar a
una hoja de cálculo o a una tabla de base de datos.
• Puede tratarse como una colección ordenada de columnas
• Cada columna puede ser de un tipo de datos diferente
• Tener índices de filas y columna
data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada'],
'year': [2000, 2001, 2002, 2001, 2002],
'pop': [1.5, 1.7, 3.6, 2.4, 2.9]}
frame = DataFrame(data)
print(frame)
#output
state year pop
0 Ohio 2000 1.5
1 Ohio 2001 1.7
2 Ohio 2002 3.6
3 Nevada 2001 2.4
4 Nevada 2002 2.9
2.13 Data Frame - especificar columnas e
índices
• Se puede especificar el orden de las columnas/filas.
• Las columnas que no estén en los datos tendrán NaN.
frame2 = DataFrame(data, columns=['year', 'state', 'pop', 'debt'],
index=['A', 'B', 'C', 'D', 'E'])

Print(frame2)
year state pop debt
A 2000 Ohio 1.5 NaN
B 2001 Ohio 1.7 NaN
C 2002 Ohio 3.6 NaN
D 2001 Nevada 2.4 NaN
E 2002 Nevada 2.9 NaN
2.14 Data Frame - de dicts anidados de dicts
• Claves dict externas como columnas y claves dict internas como índices de fila
pop = {'Nevada': {2001: 2.9, 2002: 2.9}, 'Ohio': {2002: 3.6, 2001: 1.7,
2000: 1.5}}
frame3 = DataFrame(pop)
print(frame3)
#output
Nevada Ohio
2000 NaN 1.5
2001 2.9 1.7 Transpuesta
2002 2.9 3.6
print(frame3.T)
2000 2001 2002
Unión de claves internas (en orden de clasificación) Nevada NaN 2.9 2.9
Ohio 1.5 1.7 3.6
2.15 Data Frame - índice, columnas, valores
[Link] = 'year'
[Link]='state‘
print(frame3)
state Nevada Ohio
year
2000 NaN 1.5
2001 2.9 1.7
2002 2.9 3.6

print([Link])
Int64Index([2000, 2001, 2002], dtype='int64', name='year')

print([Link])
Index(['Nevada', 'Ohio'], dtype='object', name='state')

print([Link])
[[nan 1.5]
[2.9 1.7]
[2.9 3.6]]
2.16 Data Frame - recuperar una columna
Una columna de un DataFrame puede recuperarse como Serie mediante notación tipo dict o
como atributo
data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada',
'Nevada'],
'year': [2000, 2001, 2002, 2001, 2002],
'pop': [1.5, 1.7, 3.6, 2.4, 2.9]}
frame = DataFrame(data)
print(frame['state'])
0 Ohio
1 Ohio
2 Ohio
3 Nevada
4 Nevada
Name: state, dtype: object
2.15 Ejercicio
Con el siguiente cuadro, conviértalo en un archivo csv y cárgalo en tu módulo python o
directamente en pd.read_csv(url) que lo leerá en un DataFrame
Date,"price","factor_1","factor_2"
2012-06-11,1600.20,1.255,1.548
2012-06-12,1610.02,1.258,1.554
2012-06-13,1618.07,1.249,1.552
2012-06-14,1624.40,1.253,1.556
2012-06-15,1626.15,1.258,1.552
2012-06-16,1626.15,1.263,1.558
2012-06-17,1626.15,1.264,1.572

Calcular la media y la desviación estándar (std) de la columna factor_1 y mostrar el resultado.


Pandas media() y std()
2.16 DataFrame - obtención de filas
• loc para utilizar índices e iloc para utilizar posiciones
• loc obtiene filas (o columnas) con etiquetas concretas del índice.
• iloc obtiene filas (o columnas) en posiciones determinadas del índice (por lo que sólo toma
números enteros)
data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada'],
'year': [2000, 2001, 2002, 2001, 2002],
'pop': [1.5, 1.7, 3.6, 2.4, 2.9]}
frame2 = DataFrame(data, columns=['year', 'state', 'pop', 'debt'], index=['A', 'B', 'C', 'D',
'E'])
print(frame2)
year state pop debt
A 2000 Ohio 1.5 NaN
B 2001 Ohio 1.7 NaN
C 2002 Ohio 3.6 NaN
D 2001 Nevada 2.4 NaN
E 2002 Nevada 2.9 NaN

print([Link]['A'])
year 2000
state Ohio
pop 1.5
debt NaN
Name: A, dtype: object
2.17 DataFrame - modificar columnas
frame2['debt'] = 0
print(frame2) val = Series([10, 10, 10], index = ['A', 'C', 'D'])
year state pop debt frame2['debt'] = val
A 2000 Ohio 1.5 0 print(frame2)
B 2001 Ohio 1.7 0 year state pop debt
C 2002 Ohio 3.6 0 A 2000 Ohio 1.5 10.0
D 2001 Nevada 2.4 0 B 2001 Ohio 1.7 NaN
E 2002 Nevada 2.9 0 C 2002 Ohio 3.6 10.0
D 2001 Nevada 2.4 10.0
frame2['debt'] = range(5) E 2002 Nevada 2.9 NaN
print(frame2)
year state pop debt
A 2000 Ohio 1.5 0 Las filas o elementos individuales pueden modificarse de
B 2001 Ohio 1.7 1 forma similar. Mediante loc o iloc
C 2002 Ohio 3.6 2
D 2001 Nevada 2.4 3
E 2002 Nevada 2.9 4
2.18 DataFrame - eliminar columnas
del frame2['debt']
print(frame2)
year state pop
A 2000 Ohio 1.5
B 2001 Ohio 1.7
C 2002 Ohio 3.6
D 2001 Nevada 2.4
E 2002 Nevada 2.9
2.19 Más información sobre la indexación de
DataFrame print(frame['c1']['r1'])
0
import numpy as np
data = [Link](9).reshape(3,3) print(frame[['c1',
print(data) 'c3']])
[[0 1 2] c1 c3
[3 4 5] r1 0 2
[6 7 8]] r2 3 5
r3 6 8
frame = DataFrame(data, index=['r1', 'r2', 'r3'], columns=['c1', 'c2',
'c3'])
print([Link][['r1','r
print(frame) print(frame['c1']) print([Link]['r1']) 3']])
c1 c2 c3 r1 0 c1 0 c1 c2 c3
r1 0 1 2 r2 3 c2 1 r1 0 1 2
r2 3 4 5 r3 6 c3 2 r3 6 7 8
r3 6 7 8 Name: c1, dtype: int32 Name: r1, dtype: int32
2.20 Otras funciones de DataFrame
sort_index() • sort_values()
[Link]=['A', 'C', 'B'];
[Link]=['b','a','c']; frame = DataFrame([Link](0, 10, 9).reshape(3,-1),
print(frame) index=['r1', 'r2', 'r3'], columns=['c1', 'c2', 'c3'])
print(frame)
b a c
A 0 1 2 c1 c2 c3
C 3 4 5 r1 6 9 0
B 6 7 8 r2 8 2 9
r3 8 0 6
print(frame.sort_index())
b a c print(frame.sort_values(by='c1'))
A 0 1 2 c1 c2 c3
B 6 7 8 r1 6 9 0
C 3 4 5 r2 8 2 9
r3 8 0 6
print(frame.sort_index(axis=1))
a b c print(frame.sort_values(axis=1,by=['r3','r1']))
A 1 0 2 c2 c3 c1
C 4 3 5 r1 9 0 6
r2 2 9 8
B 7 6 8
r3 0 6 8
2.20 Otras funciones de DataFrame
mean()
• Media(axis=0, skipna=True)
sum()
cumsum()
describe(): devuelve el resumen estadístico de cada columna
• para datos numéricos: media, std, max, min, 25%, 50%, 75%, etc.
• Para datos no numéricos: count, uniq, most-frequent item, etc.
corr(): correlación entre dos Series, o entre columnas de un DataFrame
corr_with(): correlación entre las columnas de un DataFrame y una serie o entre las
columnas de otro DataFrame
2.21 Tratamiento de los datos que faltan
Filtrado de valores omitidos
from numpy import nan as NaN
data = Series([1, NaN, 2.5, NaN, 6])
print(data)
0 1.0
1 NaN
2 2.5
3 NaN
4 6.0
dtype: float64

print([Link]()) print(data[[Link] print([Link]())


0 True ll()]) 0 1.0
1 False 0 1.0 2 2.5
2 True 2 2.5 4 6.0
3 False 4 6.0 dtype: float64
4 True dtype: float64
dtype: bool
2.22 Tratamiento de los datos que faltan
data = DataFrame([[1, 2, 3], [1, NaN, NaN], [NaN, NaN, NaN], [NaN, 4, 5]])
print(data)
0 1 2
0 1.0 2.0 3.0
1 1.0 NaN NaN print([Link]()) data[4]=NaN
2 NaN NaN NaN 0 1 2 print(data)
3 NaN 4.0 5.0 0 1.0 2.0 3.0 0 1 2 4
0 1.0 2.0 3.0 NaN
print([Link](how='all')) 1 1.0 NaN NaN NaN
0 1 2 2 NaN NaN NaN NaN
0 1.0 2.0 3.0 3 NaN 4.0 5.0 NaN
1 1.0 NaN NaN
3 NaN 4.0 5.0 print([Link](axis=1,
how='all'))
print([Link](axis=1, 0 1 2
how='all')) 0 1.0 2.0 3.0
0 1 2 1 1.0 NaN NaN
0 1.0 2.0 3.0 2 NaN NaN NaN
1 1.0 NaN NaN 3 NaN 4.0 5.0
2 NaN NaN NaN
3 NaN 4.0 5.0
3.1 ¿Qué es la visualización de datos?
La visualización de datos es la representación gráfica de información y datos.
• Puede lograrse utilizando elementos visuales como figuras, cuadros, gráficos, mapas,
etc.
Las herramientas de visualización de datos permiten presentar estas figuras y gráficos.
A menudo, es esencial para analizar cantidades masivas de información y tomar decisiones
basadas en datos.
• Convertir datos complejos en una representación fácil de entender.
3.2 Matplotlib
Matplotlib es una de las herramientas más potentes para la visualización de datos en Python.
Matplotlib es una biblioteca de ploteo 2D increíblemente potente.
• Es fácil de usar y proporciona un gran número de ejemplos para abordar problemas únicos.
Con el fin de obtener matplotlib en su script, primero necesitas importarlo, por ejemplo:
import [Link] as plt
Sin embargo, si no está instalado, es posible que tengas que instalarlo:
• La forma más fácil de instalar matplotlib es usando pip.
• Escriba el siguiente comando en el símbolo del sistema (cmd) o en su shell de Linux;
• pip install matplotlib
• Tenga en cuenta que puede que tenga que ejecutar el cmd anterior como administrador
3.3 Matplotlib
Se esfuerza por emular MATLAB
• [Link] es una colección de funciones de estilo comando que hacen que matplotlib funcione como MATLAB.
Cada función pyplot realiza algún cambio en la figura:
Por ejemplo:
• crea una figura,
• crea un área de trazado en la figura,
• traza algunas líneas en el área de trazado,
• decora el gráfico con etiquetas, etc.
Tenga en cuenta que los distintos estados se conservan entre las llamadas a las funciones

Siempre que se grafique con matplotlib, deben tenerse en cuenta las dos líneas de código principales:
• Tipo de gráfico
• aquí es donde se define un gráfico de barras, de líneas, etc.
• Mostrar el gráfico
• esto es para mostrar el gráfico
3.4 Ejemplo Matplotlib
• Matplotlib te permite hacer cosas fáciles
• Puede generar gráficos, histogramas, espectros de potencia, gráficos de barras, gráficos de errores, gráficos de dispersión, etc.,
con sólo unas pocas líneas de código
3.5 Grafica de líneas
import [Link] as plt
#create data for plotting
x_values = [0, 1, 2, 3, 4, 5 ]
y_values = [0, 1, 4, 9, 16,25]
#the default graph style for plot is a line
[Link](x_values, y_values)
#display the graph
[Link]()
3.6 Más Grafica de líneas
• Nota: si proporciona una sola lista o matriz al comando import [Link] as plt
[Link]([1, 2, 3, 4])
plot() [Link]('some numbers')
• entonces matplotlib asume que es una secuencia de [Link]()
valores y, y
• genera automáticamente los valores de x.
• Dado que los rangos de python empiezan por 0, el vector x por
defecto tiene la misma longitud que y pero empieza por 0. Por
lo tanto, los datos x son[0].
• Por lo tanto, los datos x son[0, 1, 2, 3].
3.7 pyplot
• text() : añade texto en un lugar arbitrario
• xlabel(): añade texto al eje x
• ylabel(): añade texto al eje y
• title() : añade un título al gráfico
• clear() : elimina todos los trazados de los ejes.
• savefig() : guarda la figura en un fichero
• legend() : muestra una leyenda en el gráfico

Todos los métodos están disponibles en pyplot y en la instancia de ejes en general.


3.8 pyplot
import [Link] as plt
y1 =[]
y2 =[]
x = range(-100,100,10)
for i in x: [Link](i**2)
for i in x: [Link](-i**2)
[Link](x, y1)
[Link](x, y2)
[Link]("x") Modificar
[Link]("y") progresivamente la
[Link](-2000, 2000)
cifra
[Link](0) # horizontal line
[Link](0) # vertical line
[Link]("[Link]")
[Link]()
3.9 Plot
import [Link] as plt

x = [1, 2, 3, 4]
y = [1, 4, 9, 16]

[Link](x, y)

¿no hay valor de retorno?

• Estamos operando sobre una variable "oculta" que representa la cifra.


• Este es un truco terrible, terrible.
• Su único propósito es complacer a los usuarios de MATLAB.
• Te voy a mostrar cómo funciona esto en la próxima clase
3.10 Línea Simple
# importing the required module
import [Link] as plt
# x axis values
x = [1,2,3]
# corresponding y axis values
y = [2,4,1]
# plotting the points
[Link](x, y)
# naming the x axis
[Link]('x - axis')
# naming the y axis
[Link]('y - axis')
# giving a title to my graph
[Link]('My first graph!')
• Defina el eje x y los valores correspondientes del eje y como listas.
# function to show the plot • Represéntelos en el lienzo utilizando la función .plot().
[Link]() • Asigne un nombre al eje x y al eje y utilizando las funciones .xlabel() y .ylabel().
• Pon un título a tu gráfico utilizando la función .title().
• Por último, para ver el gráfico, utilizamos la función .show().
3.10 Dos Líneas Simples
import [Link] as plt
# line 1 points
x1 = [1,2,3]
y1 = [2,4,1]
# plotting the line 1 points
[Link](x1, y1, label="line 1")
# line 2 points
x2 = [1,2,3]
y2 = [4,1,3]
# plotting the line 2 points
[Link](x2, y2, label = "line 2")
# naming the x axis
[Link]('x - axis')
# naming the y axis • Aquí, trazamos dos líneas en el mismo gráfico. Las
[Link]('y - axis') diferenciamos dándoles un nombre (etiqueta) que se pasa
# giving a title to my graph como argumento de la función .plot().
[Link]('Two lines on same graph!') • La pequeña caja rectangular que da información sobre el tipo
# show a legend on the plot de línea y su color se llama leyenda. Podemos añadir una
leyenda a nuestro gráfico usando la función .legend().
[Link]()
# function to show the plot
[Link]()
3.10 Personalización de gráficos
import [Link] as plt
# x axis values
x = [1,2,3,4,5,6]
# corresponding y axis values
y = [2,4,1,5,2,6]
# plotting the points
[Link](x, y, color='green', linestyle='dashed', linewidth = 3,
marker='o', markerfacecolor='blue', markersize=12)
# setting x and y axis range
[Link](1,8)
[Link](1,8)
# naming the x axis
[Link]('x - axis')
# naming the y axis
[Link]('y - axis')
# giving a title to my graph
[Link]('Some cool customizations!')
# function to show the plot
[Link]()
3.11 Gráfico de barras
import [Link] as plt
#Create data for plotting
values = [5, 6, 3, 7, 2]
names = ["A", "B", "C", "D", "E"]
[Link](names, values, color="green")
[Link]()

Cuando se utiliza un gráfico de barras, el cambio en el código será


[Link]() a [Link]() lo cambia a un gráfico de barras
3.12 Gráfico de barras
También podemos voltear el gráfico de barras horizontalmente con lo siguiente
import [Link] as plt
#Create data for plotting
values = [5,6,3,7,2]
names = ["A", "B", "C", "D", "E"]
# Adding an "h" after bar will flip the graph
[Link](names, values, color="yellowgreen")
[Link]()
3.13 Gráfico de barras
import [Link] as plt
# heights of bars
height = [10, 24, 36, 40, 5]
# labels for bars
names = ['one','two','three','four','five']
# plotting a bar chart
c1 =['red', 'green']
c2 =['b', 'g'] # we can use this for color
[Link](left, height, width=0.8, color=c1)
# naming the x-axis
[Link]('x - axis')
# naming the y-axis
[Link]('y - axis')
# plot title
[Link]('My bar chart!')
Aquí, usamos la función [Link]() para trazar un gráfico de barras.
# function to show the plot también puede dar algún nombre a las coordenadas del eje x mediante la
[Link]() definición de tick_labels
3.14 Histograma
import [Link] as plt
# frequencies
ages=[2,5,70,40,30,45,50,45,43,40,44,60,7,13,57,18,90,77,32,21,20,40]
# setting the ranges and no. of intervals
range = (0, 100)
bins = 10
# plotting a histogram
[Link](ages, bins, range, color='green',histtype='bar',rwidth=0.8)
# x-axis label
[Link]('age')
# frequency label
[Link]('No. of people')
# plot title
[Link]('My histogram')
# function to show the plot
[Link]()
3.15 Histograma
import [Link] as plt
#generate fake data
x = [2,1,6,4,2,4,8,9,4,2,4,10,6,4,5,7,7,3,2,7,5,3,5,9,2,1]
#plot for a histogram
[Link](x, bins = 10, color='blue', alpha=0.5)
[Link]()

• Mirando el fragmento de código, he añadido dos


nuevos argumentos:
• Bins - es un argumento específico para un
histograma y permite al usuario personalizar
cuántos bins desea.
• Alfa - es un argumento que muestra el nivel de
transparencia de los puntos de datos.
3.16 Scatter Plots
import [Link] as plt
#create data for plotting
x_values = [0,1,2,3,4,5]
y_values = [0,1,4,9,16,25]
[Link](x_values, y_values, s=30, color=“blue")
[Link]()

¿Puedes ver el patrón? Ahora el código


cambió de [Link]() a [Link]().
3.17 Scatter Plots
import [Link] as plt
# x-axis values
x = [1,2,3,4,5,6,7,8,9,10]
# y-axis values
y = [2,4,5,7,6,8,9,11,12,12]
# plotting points as a scatter plot
[Link](x, y, label= "stars", color="green", marker="*", s=30)
# x-axis label
[Link]('x - axis')
# frequency label
[Link]('y - axis')
# plot title
[Link]('My scatter plot!')
# showing legend
[Link]()
# function to show the plot
[Link]()
3.18 Pie Plots
import [Link] as plt
# defining labels
activities = ['eat', 'sleep', 'work', 'play']
# portion covered by each label
slices = [3, 7, 8, 6]
# color for each label
colors = ['r', 'y', 'g', 'b']
# plotting the pie chart
[Link](slices, labels = activities, colors=colors,
startangle=90, shadow = True, explode = (0, 0, 0.1, 0),
radius = 1.2, autopct = '%1.1f%%')
# plotting legend
[Link]()
# showing the plot
[Link]()
3.19 Trazado de curvas de una ecuación dada
# importing the required modules
import [Link] as plt
import numpy as np
# setting the x - coordinates
x = [Link](0, 2*([Link]), 0.1)
# setting the corresponding y - coordinates
y = [Link](x)
# potting the points
[Link](x, y)
# function to show the plot
[Link]()
3.20 Resumen
Sólo hemos arañado la superficie del poder de matplotlib.
Hay muchos más gráficos disponibles en la biblioteca matplotlib, así como otras bibliotecas populares disponibles en python,
incluyendo:
• seaborn
[Link]
• pandas plot ([Link])
[Link]
• plotly (Plotly Python Open Source Graphing Library)
[Link]
Preguntas

También podría gustarte