Add docs day 15th
Signed-off-by: Manuel Vergara <manuel@vergaracarmona.es>
This commit is contained in:
parent
42e213f82e
commit
5f9b6d8e46
19
dia_15/README.md
Normal file
19
dia_15/README.md
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
# Dia 15 - machine learning
|
||||||
|
|
||||||
|
En esta unidad se ha trabajado a través de tres cuadernos de trabajo Colab de google drive:
|
||||||
|
|
||||||
|
Cuaderno de prácticas con Numpy: https://colab.research.google.com/drive/1vp7zrchG_pJF3uzEgbCjfb_piu43mJXS?usp=sharing
|
||||||
|
Cuaderno de prácticas con Panda: https://colab.research.google.com/drive/1-E33EMCehgPnmqgwm13-SZSnVYOHMpuQ?usp=sharing
|
||||||
|
Cuaderno de prácticas con Machine Learning: https://colab.research.google.com/drive/1zRVPpLLmhMkmhX_kB9qrWUppHzRTJPFM?usp=sharing
|
||||||
|
|
||||||
|
|
||||||
|
La solución a los ejercicios son las siguientes.
|
||||||
|
|
||||||
|
- [Cuaderno de prácticas con Numpy](cuaderno_numpy.py)
|
||||||
|
|
||||||
|
- [Cuaderno de prácticas con Panda](cuaderno_panda.py)
|
||||||
|
|
||||||
|
- [Cuaderno de prácticas con Machine Learning]()
|
||||||
|
|
||||||
|
|
||||||
|
|
189
dia_15/cuaderno_numpy.py
Normal file
189
dia_15/cuaderno_numpy.py
Normal file
@ -0,0 +1,189 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
"""Copia de Python TOTAL - Numpy.ipynb
|
||||||
|
|
||||||
|
Automatically generated by Colaboratory.
|
||||||
|
|
||||||
|
Original file is located at
|
||||||
|
https://colab.research.google.com/drive/1RJ5lMM11UepgJvp8b2yp3MP6jAIQrud-
|
||||||
|
|
||||||
|
# Práctica de la librería Numpy
|
||||||
|
|
||||||
|
En este notebook, se desarrollarán una serie de tareas utilizando la librería Numpy (Numerical Python).
|
||||||
|
|
||||||
|
Se proponen y documentan posibles formas de resolver los ejercicios, pero las mismas no son únicas.
|
||||||
|
|
||||||
|
Siempre es una buena idea verificar la [Documentación Oficial de Numpy](https://numpy.org/devdocs/user/index.html), donde es posible encontrar todo tipo de información referida a esta librería. Y si te quedas trabado, busca en Google "como hacer [algo] con Numpy". Hay enormes probabilidades de que esa pregunta ya haya sido respondida!
|
||||||
|
"""
|
||||||
|
|
||||||
|
# Importamos Numpy con su abreviación "np"
|
||||||
|
import numpy as np
|
||||||
|
|
||||||
|
# Podemos crear arrays de una dimensión con la función np.array()
|
||||||
|
array_unidim = np.array([1,2,3,4,5])
|
||||||
|
|
||||||
|
# O un array de dos dimensiones (bidimensional)
|
||||||
|
array_bidim = np.array([
|
||||||
|
[1,2,3],
|
||||||
|
[4,5,6]
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
# O un array de tres dimensiones (tridimensional)
|
||||||
|
array_tridim = np.array([
|
||||||
|
[
|
||||||
|
[1,2,3],
|
||||||
|
[4,5,6]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
[7,8,9],
|
||||||
|
[10,11,12]
|
||||||
|
]
|
||||||
|
])
|
||||||
|
|
||||||
|
"""Para cada uno de estos arrays, podemos obtener sus propiedades, tales como su "forma", número de dimensiones, tipos de datos y tamaño."""
|
||||||
|
|
||||||
|
from numpy.core.multiarray import array
|
||||||
|
# Atributos del array unidimensional (forma, número de dimensiones, tipos de datos, tamaño, y tipo)
|
||||||
|
array_unidim.shape, array_unidim.ndim, array_unidim.dtype, array_unidim.size, type(array_unidim)
|
||||||
|
|
||||||
|
# Atributos del array bidimensional
|
||||||
|
array_bidim.shape, array_bidim.ndim, array_bidim.dtype, array_bidim.size, type(array_bidim)
|
||||||
|
|
||||||
|
# Atributos del array tridimensional
|
||||||
|
array_tridim.shape, array_tridim.ndim, array_tridim.dtype, array_tridim.size, type(array_tridim)
|
||||||
|
|
||||||
|
# Importamos pandas como pd, y creamos un DataFrame a partir del array bidimensional
|
||||||
|
import pandas as pd
|
||||||
|
|
||||||
|
datos = pd.DataFrame(array_bidim)
|
||||||
|
datos
|
||||||
|
|
||||||
|
# Creamos un array de tamaño 4x3, formado únicamente por unos (1)
|
||||||
|
unos = np.ones((4,3))
|
||||||
|
unos
|
||||||
|
|
||||||
|
# Creamos un array de tamaño 2x4x3, formado únicamente por ceros (0)
|
||||||
|
cero = np.zeros((2,4,3))
|
||||||
|
cero
|
||||||
|
|
||||||
|
# Creamos un array de números en el rango de 0 a 100, con un paso de 5
|
||||||
|
|
||||||
|
array_1 = np.arange(0,101,5)
|
||||||
|
array_1
|
||||||
|
|
||||||
|
# Creamos un array de números aleatorios enteros comprendidos en entre 0 y 10, de tamaño (2, 5)
|
||||||
|
|
||||||
|
array_2 = np.random.randint(0,10,(2,5))
|
||||||
|
array_2
|
||||||
|
|
||||||
|
# Creamos un array de números aleatorios decimales comprendidos en entre 0 y 1, de tamaño (3, 5)
|
||||||
|
array_3 = np.random.random((3,5))
|
||||||
|
array_3
|
||||||
|
|
||||||
|
# Establecemos la "semilla" de números aleatorios en 27
|
||||||
|
np.random.seed(27)
|
||||||
|
|
||||||
|
# Creamos un array de números aleatorios enteros comprendidos en entre 0 y 10, de tamaño (3, 5)
|
||||||
|
array_4 = np.random.randint(0,10,(3,5))
|
||||||
|
array_4
|
||||||
|
|
||||||
|
"""¿Qué ocurre al correr la última celda nuevamente, a diferencia de las anteriores?"""
|
||||||
|
|
||||||
|
# Encontramos los valores únicos del array_4
|
||||||
|
np.unique(array_4)
|
||||||
|
|
||||||
|
# Extraemos el elemento de índice 1 del array_4
|
||||||
|
array_4[1]
|
||||||
|
|
||||||
|
# Extraemos las primeras dos filas del array_4
|
||||||
|
array_4[:2]
|
||||||
|
|
||||||
|
# Extraemos los dos primeros datos de las primeras dos filas del array_4
|
||||||
|
array_4[:2,:2]
|
||||||
|
|
||||||
|
# Creamos dos arrays de tamaño 3x4: uno relleno de números aleatorios entre 0 y 10, y otro relleno de unos
|
||||||
|
array_5 = np.random.randint(0,10,(3,4))
|
||||||
|
array_6 = np.ones((3,4))
|
||||||
|
|
||||||
|
# invocamos el array_5
|
||||||
|
array_5
|
||||||
|
|
||||||
|
# invocamos el array_6
|
||||||
|
array_6
|
||||||
|
|
||||||
|
# Sumamos los dos arrays
|
||||||
|
array_5 + array_6
|
||||||
|
|
||||||
|
# Creamos ahora un array de tamaño (4,3) lleno de unos
|
||||||
|
array_7 = np.ones((4,3))
|
||||||
|
array_7
|
||||||
|
|
||||||
|
# Intentaremos sumar los arrays 6 y 7
|
||||||
|
array_6 + array_7
|
||||||
|
|
||||||
|
"""¿A qué se debe el error anterior? ¿Qué deberíamos tener en cuenta para que no suceda?"""
|
||||||
|
|
||||||
|
# Entonces crearemos otro array de tamaño (4,3) lleno de unos
|
||||||
|
array_8 = np.ones((4,3))
|
||||||
|
array_8
|
||||||
|
|
||||||
|
# Restamos el array_8 al array_7
|
||||||
|
array_8 - array_7
|
||||||
|
|
||||||
|
# Creamos otros dos arrays de tamaño 3x3 con números aleatorios del 1 al 5
|
||||||
|
array_9 = np.random.randint(1,5,(3,3))
|
||||||
|
array_10 = np.random.randint(1,5,(3,3))
|
||||||
|
|
||||||
|
# invocamos el array_9
|
||||||
|
array_9
|
||||||
|
|
||||||
|
# invocamos el array_10
|
||||||
|
array_10
|
||||||
|
|
||||||
|
# Multiplicamos los últimos dos arrays entre sí
|
||||||
|
array_9 * array_10
|
||||||
|
|
||||||
|
# Elevamos el array_9 al cuadrado
|
||||||
|
array_9 ** 2
|
||||||
|
|
||||||
|
# Buscamos la raíz cuadrada del array_10
|
||||||
|
np.sqrt(array_10)
|
||||||
|
|
||||||
|
# Hallamos el promedio de los valores del array_9
|
||||||
|
array_9.mean()
|
||||||
|
|
||||||
|
# Hallamos el valor máximo de los valores del array_9
|
||||||
|
array_9.max()
|
||||||
|
|
||||||
|
# Hallamos el valor mínimo de los valores del array_9
|
||||||
|
array_9.min()
|
||||||
|
|
||||||
|
# Cambiamos la forma del array_9 por una de 9x1, y lo almacenamos como array_11
|
||||||
|
array_11 = array_9.reshape((9,1))
|
||||||
|
|
||||||
|
# invocamos el array_11
|
||||||
|
array_11
|
||||||
|
|
||||||
|
# Transponemos el array_11
|
||||||
|
array_11.T
|
||||||
|
|
||||||
|
# Comparamos el array_9 y el array_10, para saber cuáles elementos del array_9 son mayores a los del array_10
|
||||||
|
array_12 = array_9 > array_10
|
||||||
|
array_12
|
||||||
|
|
||||||
|
"""¿Qué tipos de datos forman parte del array de resultados?"""
|
||||||
|
|
||||||
|
# Veamos sus nuevos tipos de datos
|
||||||
|
array_12.dtype
|
||||||
|
|
||||||
|
# Alguno de los elementos del array_9 es igual su equivalente del array_10?
|
||||||
|
array_9 == array_10
|
||||||
|
|
||||||
|
# Comparamos nuevamente ambos arrays, en esta ocasión con >=
|
||||||
|
array_9 >= array_10
|
||||||
|
|
||||||
|
# Buscamos los elementos del array_9 que son mayores a 2
|
||||||
|
array_9 > 2
|
||||||
|
|
||||||
|
# Ordenamos de menor a mayor los elementos dentro del array_9
|
||||||
|
np.sort(array_9)
|
129
dia_15/cuaderno_panda.py
Normal file
129
dia_15/cuaderno_panda.py
Normal file
@ -0,0 +1,129 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
"""Python TOTAL - Pandas.ipynb
|
||||||
|
|
||||||
|
Automatically generated by Colaboratory.
|
||||||
|
|
||||||
|
Original file is located at
|
||||||
|
https://colab.research.google.com/drive/1uXPQgRFyhRzarWbO9ytZ1Y2amriZgeex
|
||||||
|
|
||||||
|
# Práctica de la librería Pandas
|
||||||
|
|
||||||
|
En este notebook, se desarrollarán una serie de tareas utilizando la librería Pandas (el "Excel" de Python).
|
||||||
|
|
||||||
|
Se proponen y documentan posibles formas de resolver los ejercicios, pero pueden existir varias formas de lograr los mismos resultados.
|
||||||
|
|
||||||
|
Siempre es una buena idea verificar la [Documentación Oficial de Pandas](https://pandas.pydata.org/pandas-docs/stable/), donde es posible encontrar todo tipo de información referida a esta librería. Y si te quedas trabado, busca en Google "como hacer [algo] con Pandas". Hay enormes probabilidades de que esa pregunta ya haya sido respondida!
|
||||||
|
"""
|
||||||
|
|
||||||
|
# Importamos Pandas
|
||||||
|
import pandas as pd
|
||||||
|
|
||||||
|
# Creamos una serie de números y hallamos su media
|
||||||
|
numeros = pd.Series([1,2,3,5,67,35,235,62])
|
||||||
|
numeros.mean()
|
||||||
|
|
||||||
|
# Hallamos la suma de dichos números
|
||||||
|
numeros.sum()
|
||||||
|
|
||||||
|
# Creamos una SERIE de tres colores diferentes
|
||||||
|
colores = pd.Series(['rojo','amarillo','verde'])
|
||||||
|
|
||||||
|
# Visualizamos la serie creada
|
||||||
|
colores
|
||||||
|
|
||||||
|
# Creamos una serie con tipos de autos, y la visualizamos
|
||||||
|
tipos_autos = pd.Series(['sedan', 'SUV', 'Pick up'])
|
||||||
|
tipos_autos
|
||||||
|
|
||||||
|
# Combinamos las series de tipos de autos y colores en un DATAFRAME
|
||||||
|
tabla_autos = pd.DataFrame({'Tipo de Auto':tipos_autos, 'Color':colores})
|
||||||
|
tabla_autos
|
||||||
|
|
||||||
|
# Conectamos el cuaderno actual con nuestro Drive
|
||||||
|
from google.colab import drive
|
||||||
|
drive.mount('/content/drive')
|
||||||
|
|
||||||
|
# Importar "ventas-autos.csv" y convertirlo en un nuevo DATAFRAME
|
||||||
|
ventas_autos = pd.read_csv('/content/drive/MyDrive/Colab Notebooks/ventas-autos.csv')
|
||||||
|
ventas_autos
|
||||||
|
|
||||||
|
"""Este será nuestro "Dataframe de Flujo Vehicular"
|
||||||
|
"""
|
||||||
|
|
||||||
|
# Exportar el Dataframe como un archivo CSV a mi carpeta "/content/drive/MyDrive/Colab Notebooks/pruebas/"
|
||||||
|
ventas_autos.to_csv('/content/drive/MyDrive/Colab Notebooks/este_archivo.csv')
|
||||||
|
|
||||||
|
# Analicemos los tipos de datos disponibles en el dataset de ventas autos
|
||||||
|
ventas_autos.dtypes
|
||||||
|
|
||||||
|
# Apliquemos estadística descriptiva (cantidad de valores, media, desviación estándar, valores mínimos y máximos, cuartiles) al dataset
|
||||||
|
ventas_autos.describe()
|
||||||
|
|
||||||
|
# Obtenemos información del dataset utilizando info()
|
||||||
|
ventas_autos.info()
|
||||||
|
|
||||||
|
# Listamos los nombres de las columnas de nuestro dataset
|
||||||
|
ventas_autos.columns
|
||||||
|
|
||||||
|
# Averiguamos el "largo" de nuestro dataset
|
||||||
|
len(ventas_autos)
|
||||||
|
|
||||||
|
# Mostramos las primeras 5 filas del dataset
|
||||||
|
ventas_autos.head()
|
||||||
|
|
||||||
|
# Mostramos las primeras 7 filas del dataset
|
||||||
|
ventas_autos.head(7)
|
||||||
|
|
||||||
|
# Mostramos las últimas 3 filas del dataset
|
||||||
|
ventas_autos.tail(3)
|
||||||
|
|
||||||
|
# Utilizamos .loc para seleccionar la fila de índice 3 del DataFrame
|
||||||
|
ventas_autos.loc[3]
|
||||||
|
|
||||||
|
# Utilizamos .iloc para seleccionar las filas 3, 7 y 9
|
||||||
|
ventas_autos.iloc[[3,7,9]]
|
||||||
|
|
||||||
|
"""En la documentación podrás observar la diferencia entre el funcionamiento de [.loc](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.loc.html) e [.iloc](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.iloc.html)."""
|
||||||
|
|
||||||
|
# Seleccionar la columna "Kilometraje"
|
||||||
|
ventas_autos['Kilometraje']
|
||||||
|
|
||||||
|
# Encontrar el valor medio de la columnas "Kilometraje"
|
||||||
|
ventas_autos['Kilometraje'].mean()
|
||||||
|
|
||||||
|
# Seleccionar aquellas columnas que tengan valores superiores a 100,000 kilómetros en la columna Kilometraje
|
||||||
|
ventas_autos[ventas_autos['Kilometraje'] > 100000]
|
||||||
|
|
||||||
|
# Creamos una tabla cruzada de doble entrada entre Fabricante y cantidad de puertas
|
||||||
|
pd.crosstab(ventas_autos['Fabricante'], ventas_autos['Puertas'])
|
||||||
|
|
||||||
|
# Agrupamos las columnas por fabricante y buscandos el valor medio de las columnas numéricas
|
||||||
|
ventas_autos.groupby(['Fabricante']).mean()
|
||||||
|
|
||||||
|
# Commented out IPython magic to ensure Python compatibility.
|
||||||
|
# Importamos Matplotlib y creamos un gráfico con los valores de la columna Kilometraje
|
||||||
|
import matplotlib as plt
|
||||||
|
# %matplotlib inline
|
||||||
|
|
||||||
|
ventas_autos['Kilometraje'].plot()
|
||||||
|
|
||||||
|
# Puede que un gráfico más apropiado en este caso sea un histograma?
|
||||||
|
ventas_autos['Kilometraje'].hist()
|
||||||
|
|
||||||
|
# Intentamos graficar la columna de precios
|
||||||
|
ventas_autos['Precio (USD)'].plot()
|
||||||
|
|
||||||
|
"""No funcionó, verdad? Alguna idea de por qué esto puede ocurrir?
|
||||||
|
|
||||||
|
Una pista es buscar: "cómo convertir strings de Pandas a números"
|
||||||
|
|
||||||
|
[Aqui hay un enlace a StackOverflow referido a este tema](https://stackoverflow.com/questions/44469313/price-column-object-to-int-in-pandas).
|
||||||
|
"""
|
||||||
|
|
||||||
|
# Elimina la puntuación de la columna de precios
|
||||||
|
ventas_autos['Precio (USD)'] = ventas_autos['Precio (USD)'].str.replace('[\$\.\,]', '')
|
||||||
|
ventas_autos['Precio (USD)'] = ventas_autos['Precio (USD)'].astype(int)/100
|
||||||
|
|
||||||
|
ventas_autos
|
||||||
|
|
||||||
|
ventas_autos['Precio (USD)'].plot()
|
Loading…
Reference in New Issue
Block a user