Inspección de los tipos de datos
Clase 12 de 32 • Curso de Machine Learning Aplicado con Python
Contenido del curso
Clase 12 de 32 • Curso de Machine Learning Aplicado con Python
Contenido del curso
Usuario anónimo
Ivan Galeana Aguilar
Mauricio Barrera
Jimmy Buriticá Londoño
Luis Daniel Castellanos Remolina
Luis Alberto Ramirez Figueroa
Diego Martinez
Geovany Uribe Aguirre
Jorge Leonardo Quintero Pacheco
Joel Ricci López
Usuario anónimo
Arnulfo Rojas Jimenez
Usuario anónimo
Usuario anónimo
Usuario anónimo
Cesar Bretana Gonzalez
Darvin Orozco
Wildin Mota
Cristian Orozco Benjumea
Diego Forero
Cristian Orozco Benjumea
Santiago Pulido Peláez
Jean Paul
Juan Andrés Oviedo Castro
Luis Alejandro Hernández Contreras
Alex Camacho
Augusto Napuri
Darvin Orozco
Usuario anónimo
Melquiades Rodríguez
Mauricio Andrés Guerra Cubillos
Darvin Orozco
Pedro Escobar
Jesús Hernández
Darvin Orozco
Usuario anónimo
Usuario anónimo
Usuario anónimo
Este profe me ha parecido muy bueno. Siento que he entendido bastante y que ha llenado algunos vacíos de los cursos anteriores :) También he aprendido mucho de los cursos anteriores. Esta beca de MinTIC en verdad es muy buena
Espero mas cursos con este profesor
Totalmente de acuerdo, el profesor es muy bueno y ahora me doy cuenta de que cosas que pensaba que entendía, no era realmente así.
Para los que les pareció extraño el siguiente comando:
num_cols = [c for c in num.index if num[c]]
La forma larga sería:
num_cols = [] for llave, tipo in num.items(): if tipo == True: num_cols.append(llave) print(num_cols)
gracias:)
genial!
Carlos Jacob, unos comentarios atras menciona un error con el tipo de dato "int", pues con la columna "cast_total_facebook_likes" el dato aparece con tipo "int64"
Para solucionar ello en la linea dtypes es necesario nombrarla asì para que reconozca ese dato
movies.dtypes == 'int64'
Eso vi, lo que no sé es por qué a él si se lo toma como True en su ejemplo, y cuando yo le doy int me lo toma como False
Gracias buen hombre
Para extraer los tipos de datos, también es posible utilizar:
# Para extraer los nombres de columnas int y float movies.select_dtypes([int, float]).columns # O directamente 'np.number' para extraer cualquier tipo numérico (incluidos int y float) movies.select_dtypes([np.number]).columns # Y finalmente: movies.select_dtypes([np.number]) # Si se quiere extraer ya directamente todo el dataframe
Y para texto (o cualquier tipo no numérico):
movies.select_dtypes(exclude=[np.number]).columns
Uau sí.
Con la diferencia de que el type de la forma que plantea @riccilob es:
<class 'pandas.core.indexes.base.Index'>
Igualmente, si quisieras hacerlo con list-comprehension un poco más corto, podría ser:
num_cols = [c for c in movies.columns if movies.dtypes[c] in (float, int)]
obj_cols = [c for c in movies.columns if movies.dtypes[c]==object]
y quedaría con type:
<class 'list'>
Otra forma de identificar las columnas numericas seria con el siguiente comando: (movies.dtypes == np.float64) | (movies.dtypes == np.int64) Por si no les toma los tipos de datos enteros que en este caso solo es una 'cast_total_facebook_likes'
Que bonito que es entender :')
Con estas instrucciones se haría la construcción de la lista para los que son numéricos tanto float como "int64" pero de la forma tradicional sin simplificaciones de código de una sola línea:
num_cols = [] for c in num.index: if num[c] == True: num_cols.append(c)
En el minuto 9:57 tambien puedes tomar como alternativa para ahorrarte un poquito de espacio en codigo y resultar mas eficiente, poner la comparacion de tipos adentro de una funcion, algo como esto:
def cols_of_type(col_type): # number, string cols = [] if (col_type == 'number'): num = (movies.dtypes == float) | (movies.dtypes == int) cols = [c for c in num.index if num[c]] if (col_type == 'string'): strs = (movies.dtypes == object) cols = [c for c in strs.index if strs[c]] return cols
Es solo una sugerencia, no es que este mal ni nada menos 😉
Saludos.
Excelente código, siempre se aprende de qué otras formas se puede hacer lo mismo.
Complementar este curso con el de datascience es muy importante
Jupyter Notebook también es usado para trabajo de campo o sólo es para uso didáctico?
Es usado para trabajo de campo, es una herramienta muy poderosa que permite ser guardada y ejecutarla nuevamente cambiando los datos de entrar y obtener nuevamente todos los resultados.
Cuando tienes algoritmos de predicción estos suelen ser desplegados como scripts de python para que sea más rápida la ejecución y no tener que levantar cosas como Jupyter ya que no se va a ver, el ideal es por ejemplo que se corra el script se hagan las predicciones o recomendaciones y se guarde en base de datos o un archivo.
Es decir Jupyter se usa cuando es necesario presentar de modo gráfico los hallazgos.
El script cuando las tareas ya están identificadas y sólo nos interesa que no arroje el resultado.
Excelentes explicaciones. hasta ahora ha sido muy claro. ¿Qué otros cursos tiene este profesor??
"Deep Learning con Pytorch" que te permitira profundizar sobre redes neuronales, el modelo con mejor performance hoy en dia para una gran parte de las tareas de Machine Learning.
Para quien se le dificulta entender la list comprehension
columns_values = [number for number in columns.index if columns[number]]
Es el equivalente a este otro código:
columns_values = [ ] for values in movies.index: if columns_values == True: columns.append(values)
:)
Quien no recuerde lo que es list comprenhesion, aquí un enlace base -> por aquello de esta instrucción num_cols = [c for c in num.index if num[c]]
https://www.programiz.com/python-programming/list-comprehension
Muchas gracias por el aporte, ayuda a clarificar el tema :)
Aca van los hotkeys:
Gracias, el HotKey que más me ha servido es: CTRL + ENTER. Muchas gracias, buen aporte.
Comparto el código de la actividad de esta sesión de clase con las correcciones de int por "int64" para mi caso. Se obtiene la información de las columnas de la tabla de películas:
# Inspección de los tipos de datos movies.info()
Inspección de las columnas que son numéricas de tipo real y de tipo entero:
# A diferencia de Numpy, Pandas permite cargar no solo datos numericos pero tambien **datos de texto** que vemos por ejemplo en las columnas de actores y **mezclar distintos tipos de datos**. # int64 y float64 corresponden a los mismos dtypes de Numpy # object es el dtype que permite manejar datos de texto # columnas númericas y columnas de texto movies.dtypes == float movies.dtypes == "int64"
Aplicación de la operación "OR" entre columnas numericas de tipo float e "int64":
(movies.dtypes == float) | (movies.dtypes == "int64")
Inspección de las columnas de texto:
movies.dtypes == object
Almacenamiento de los resultados de la operación "OR" entre columnas numéricas de tipo float e "int64" en una variable de tipo lista booleana:
num = (movies.dtypes == float) | (movies.dtypes == "int64") num
Inspección de los indices de las columnas:
num.index
Almacenamiento de solo los indices de columna de tipo entero:
num_cols = [c for c in num.index if num[c]] num_cols
Almacenamiento de los indices de solo las columnas que han sido inspeccionadas como tipo texto:
movies.dtypes == object obj = (movies.dtypes == object) obj_cols = [c for c in obj.index if obj[c]] obj_cols
muchas gracias jose :)
Una serie es un Dataframe de una sola columna.
buen resumen!
A diferencia de Numpy, Pandas permite cargar no solo datos numéricos, también datos de texto que vemos, por ejemplo, en las columnas de actores y mezclar distintos tipos de datos.
• int64 y float64 corresponden a los mismos dtypes de Numpy
•object es el dtype que permite manejar datos de texto
Una pequeña variación para sacar las variables en dos líneas es:
obj_cols = [x for x in (movies.dtypes == object).index if (movies.dtypes == object)[x]] num_cols = [x for x in (movies.dtypes != object).index if (movies.dtypes != object)[x]]
Excelente! otra forma más compacta en código pero que ayuda a hacer lo mismo, gracias!
Uff de verdad que esto si es una clase muy bien explicada.
Excelente explicacion comparto mi avance en colab con el dataframe desde google drive
clic aqui
Una pregunta: como obtuviste el link para descargar el archivo??