Python

type: list
name: "Notas con #powershell en Omnivore"
order:
  - property: date_saved
    direction: desc
columns:
  - file.name
  - date_saved
filters:
  and:
    - file.inFolder("Omnivore")
    - file.hasTag("python", "Python")
views:
  - type: table
    name: Table
    sort:
      - property: file.mtime
        direction: DESC

curso-GCP DESARROLLO DE APLICACIONES PYTHON

🧠 Fundamentos y Ejecución de Programas

  • Cómo ejecuta Python los programas
    Python interpreta el código línea por línea, gestionando un bytecode interno y ejecutándolo en la Python Virtual Machine (PVM). Comprender el flujo de ejecución permite optimizar y depurar mejor.

  • Ejecutar programas en Python
    Se profundiza en cómo lanzar scripts desde terminal, usar python file.py, ejecutar módulos con -m, y explorar entornos virtuales para aislar dependencias.

🧱 Tipos de Datos y Estructuras Fundamentales

  • Introducción a los tipos de objetos Python
    Python es todo objetos, desde enteros hasta funciones. Cada valor tiene tipo, identidad y estado.

  • Tipos Numéricos
    Incluye int, float, complex, bool. Se explican operaciones aritméticas, conversión de tipos y precisiones.

  • Tipado Dinámico
    En Python las variables no tienen tipo fijo: el tipo pertenece al objeto, no al nombre. Permite mayor flexibilidad pero exige disciplina para evitar errores silenciosos.

  • Fundamentos de Cadenas
    Manipulación de strings, slicing, métodos útiles (split, join, replace, etc.), inmutabilidad y codificaciones.

  • Listas y Diccionarios
    Las listas son secuencias mutables; los diccionarios son mapas llave-valor altamente optimizados. Se cubren métodos, rendimiento y casos de uso.

  • Tuplas, Ficheros y todo lo demás
    Tuplas como secuencias inmutables, lectura y escritura de archivos, modos de apertura, contexto with, y otros tipos integrados relevantes.

🧩 Sentencias y Control del Flujo

  • Introducción a las Sentencias Python
    Sintaxis clave: asignaciones, condicionales, bucles, importaciones y bloques estructurados.

  • Asignaciones, Expresiones y Prints
    Asignación múltiple, unpacking, expresiones compuestas y usos modernos de print con f-strings.

  • if Tests y Reglas de Sintaxis
    Evaluación booleana, truthiness, operadores lógicos y estructura del flujo condicional.

  • Los Bucles While y For
    Iteración sobre secuencias e iteradores, break, continue, y patrones comunes en recorridos.

  • Iteraciones y Comprehensions
    Comprehensions de listas, sets y diccionarios para escribir código más limpio y eficiente.

  • La Documentación
    Uso de help(), docstrings, anotaciones y convenciones de documentación estilo PEP 257.

⚙️ Funciones y Ámbito

  • Fundamentos de las Funciones
    Definición con def, retorno de valores, valores por defecto y funciones como ciudadanos de primera clase.

  • Scopes
    Regla LEGB (Local, Enclosed, Global, Built-in), closures y cómo Python resuelve nombres.

  • Argumentos
    Tipos de argumentos: posicionales, keyword, args, **kwargs. Patrones comunes y buenas prácticas.

  • Funciones Avanzadas
    Decoradores, funciones lambda, funciones de orden superior y estrategias funcionales.

  • Comprehensions y Generations
    Gens y generadores con yield, lazy evaluation, rendimiento y flujos infinitos.

  • Benchmarking
    Uso de time, timeit, perfiles básicos y cómo medir rendimiento de fragmentos de código.

📦 Módulos y Arquitectura de Programas

  • Módulos
    Importación, búsqueda en sys.path, paquetes, __init__.py, aliasing y organización del código.

  • Programación de Módulos
    Construcción de módulos reutilizables, separación lógica, encapsulación y estilos recomendados.

🧱 Programación Orientada a Objetos

  • Programación Orientada a Objetos
    Conceptos esenciales: clases, instancias, atributos, métodos, composición y encapsulación.

  • Fundamentos de Programación de Clases
    Definición de clases, self, atributos de clase y de instancia, métodos especiales básicos.

  • Sobrecarga de Operadores
    Implementación de métodos mágicos (__add__, __len__, __repr__, etc.) para integrar objetos personalizados con la sintaxis de Python.

curso-IA y ML Basico-Python

  • Data Science Introducción estructurada a los conceptos fundamentales de Inteligencia Artificial (IA) y Machine Learning (ML) en Python. Esta nota organiza los temas y añade explicaciones ampliadas para que funcionen como referencia conceptual.

Recurso principal


Conceptos Fundamentales de IA y ML

Regresión

  • La regresión modela la relación entre una o más variables de entrada (features) y una variable de salida (target).
    • Se usa para predecir valores numéricos: precios, temperaturas, probabilidades.
    • Técnicas comunes: regresión lineal, polinómica, regularización (Ridge, Lasso).
    • Objetivo: encontrar la función que mejor minimice el error entre predicción y realidad.

Árboles de decisión

  • Un árbol de decisión divide el espacio de decisiones mediante condiciones.
    • Ideal para clasificación o regresión.
    • Genera reglas tipo: “si edad < 18 y compra = no → categoría X”.
    • Ventajas: interpretables, pueden manejar datos categóricos o numéricos.
    • Limitaciones: tienden a sobreajustar si no se podan.

Métodos Bayesianos

  • Basados en la probabilidad de Bayes, permiten actualizar creencias según evidencia.
    • Usados para clasificación de textos (spam vs no spam), detección de patrones, filtrado.
    • El modelo calcula la probabilidad posterior de una clase dadas sus características.
    • Ejemplo: Naive Bayes, que asume independencia entre características.

Agrupación (Clustering)

  • Técnicas para agrupar elementos sin categorías previas.
    • Busca similitud entre elementos (distancias, densidades, conectividad…)
    • Ejemplos: K-means, DBSCAN, clustering jerárquico.
    • Usos: segmentación de clientes, agrupación de imágenes, estructuración de datos.

Procesamiento de Lenguaje Natural (NLP)

Campo que permite que las máquinas entiendan, generen y procesen lenguaje humano.

  • Traducción automática.
  • Análisis de sentimientos.
  • Extracción de información.
  • Chatbots.
  • Filtrado de correos.
  • Modelos modernos: transformers, embeddings, modelos generativos.

Robótica e IA aplicada

Visión por Computador (CV)

  • Procesamiento de imágenes y video: detección de objetos, rostros, biometría.
  • Autoanotación y segmentación de imágenes.
  • Filtros, transformaciones, identificación de patrones visuales.

Deep Learning (DL)

  • Redes neuronales con múltiples capas que aprenden representaciones complejas.
    • Jerarquía de niveles: capas iniciales detectan patrones básicos; capas profundas reconocen estructuras avanzadas.
    • Aplicaciones: reconocimiento de voz, imágenes, texto, series temporales.

Reinforcement Learning (RL)

  • Aprendizaje por recompensas y penalizaciones.
    • El agente aprende a tomar decisiones óptimas mediante prueba y error.
    • Usos: videojuegos, robótica, control, optimización, vehículos autónomos.

Agentes Virtuales

  • Sistemas que perciben el entorno y ejecutan acciones.
    • Asistentes (Alexa, Google Assistant).
    • Bots autónomos en juegos.
    • Automatización de tareas repetitivas.

Minería de Datos (Data Mining)

Disciplina orientada a extraer conocimiento útil de grandes conjuntos de datos.

  • Descubrimiento de correlaciones, patrones ocultos y anomalías.
  • Eliminación de ruido, duplicados y datos mal estructurados.
  • Técnicas estadísticas + algoritmos de aprendizaje automático.
  • Incluye el proceso KDD (Knowledge Discovery in Databases):
    1. Selección de datos
    2. Limpieza
    3. Transformación
    4. Minería de datos
    5. Interpretación y evaluación

Análisis del Problema (Workflow)

Proceso típico antes de aplicar ML o IA a un dataset.

Análisis de datos

  • Exploración inicial: tendencias, outliers, valores nulos.
  • Validación de la consistencia.
  • Identificación de ruido o errores.
  • Evaluación de correlaciones y distribución.

Preparación de datos

  • Selección de variables relevantes.
  • Construcción de variables adicionales (feature engineering).
  • Normalización, limpieza, codificación categórica.
  • Scripts que automatizan el preprocesamiento.
  • Formateo del dataset para su uso en modelos.

Modelado

  • Selección de algoritmos según el tipo de problema:
    • regresión, clasificación, clustering, redes neuronales.
  • Consideración de requerimientos, complejidad y contexto.
  • Entrenamiento, ajuste de hiperparámetros, validación cruzada.

Evaluación

  • Comparación entre predicciones y valores reales.
  • Detección de problemas comunes:
    • falta de datos,
    • variables mal seleccionadas,
    • modelo inadecuado.
  • Métricas según el modelo: precisión, recall, MSE, F1, ROC-AUC.

Implementación y comunicación

  • Documentación del proceso y visualizaciones.
  • Presentación clara para clientes o stakeholders.
  • Conclusiones, reportes, recomendaciones y próximos pasos.

Extraer Datos de un Conjunto de Datos

Operaciones básicas para obtener la información útil antes de entrenar modelos.

  • Lectura de archivos CSV, JSON, Excel.
  • Selección de columnas.
  • Filtrado por condiciones.
  • Detección de valores atípicos.
  • Descripción estadística inicial.
  • Agrupación por categorías o rangos.
  • Exportación y limpieza de datos para análisis posterior.

curso-IA-python-CS50

Curso basado en CS50’s Introduction to Artificial Intelligence with Python, enfocado en fundamentos de algoritmos de búsqueda, resolución de problemas, heurísticas, teoría de grafos y primeros pasos en IA clásica.

Search – Lecture 0

Introducción a los algoritmos de búsqueda y a la representación de problemas como grafos. Se cubren conceptos como estados, acciones, transiciones, costo, soluciones óptimas, DFS, BFS y la motivación detrás de la IA clásica.

  • Week 0 – Search
    • Revisión teórica del modelo Agent–Environment, grafos, nodos, aristas, y definición formal de un problema de búsqueda.
    • Clasificación de algoritmos informados/no informados.
    • Ejemplos de búsquedas en mapas y laberintos.
  • Search – Lecture 0 – Video
    • Implementación paso a paso de DFS y BFS.
    • Demostraciones visuales y comparaciones de rendimiento.
    • Introducción a heurísticas y coste de caminos.

Material relacionado (proyectos y notas)

Cada ítem añade práctica o ampliación del contenido visto en la semana 0. Incluye anotaciones, código, ejercicios y análisis propios.

  • 00-Maze Code
    • Implementación de un laberinto (maze solver) como grafo.
    • Representación de nodos, vecinos, movimientos válidos y detección de colisiones.
    • Ideal para visualizar DFS/BFS en acción sobre una matriz.
  • 01-Degrees
    • Problema real basado en la base de datos IMDb: encontrar la conexión mínima entre actores (“Six Degrees of Separation”).
    • Introducción a búsqueda en grafos grandes, manejo de archivos CSV y optimización.
  • 02-Tic-Tac-Toe
    • Implementación de un agente que juega a Tic-Tac-Toe.
    • Introducción al algoritmo Minimax, estados terminales, funciones de utilidad y decisiones óptimas.
  • 03-Intro AI
    • Resumen general de conceptos de IA clásica.
    • Agentes, racionalidad, heurísticas, grafos, caminos óptimos, espacio de estados.
  • 04-Search
    • Explicación detallada del proceso de búsqueda:
      • Formulación del problema
      • Estados, acciones, transición
      • Estrategias de exploración
    • Casos típicos de problemas: navegación, puzles, rutas.
  • 05-Solving Search Problems
    • Guía práctica para modelar problemas como grafos antes de implementar el algoritmo.
    • Análisis de complejidad, memoria, profundidad del árbol y posibles optimizaciones.
  • 06-Depth First Search DFS
    • Explicación del algoritmo DFS, su naturaleza recursiva y cuándo es ventajoso usarlo.
    • Limitaciones: riesgo de ciclos, caminos no óptimos, uso de stack.
  • 07-Breadth First Search
    • Búsqueda en anchura -> garantiza solución más corta en grafos no ponderados.
    • Implementación con cola (queue) y análisis del coste temporal y espacial.
  • 08-EJ maze solving DFS y BFS
    • Ejemplos completos de resolución de laberintos usando ambos algoritmos.
    • Comparación: velocidad, profundidad, nodos explorados, optimalidad.
  • 09-DFS y BFS en codigo maze solving maze.py
    • Código práctico final unificando todo lo aprendido.
    • Patrón general:
      • Representación del grafo
      • Frontier (stack/queue)
      • Visited set
      • Reconstrucción del camino
    • Además incluye mejoras: detección de loops, visualización y debug.

curso python-20-projects

Relacionado

  • %20[En])
  • python-avanzado
  • python-avanzado-Apuntes
  • python-avanzado-Apuntes > anaconda, entorno virtual
  • ejercicios-01-todo-app
  • preguntas-01-todo-app
  • github del curso

Futuras implementaciones

01-todo app

  • crear entorno virtual y primer proyecto
  • editar tareas, list indexing
  • guardar y leer tareas en files
  • list comprehension para mostrar tareas sin saltos de línea
  • editar tareas en files, manejo con try si no existe file
  • cambiar math case por ifs, list slicing, usar número en primer input
  • comprobador de passwords
  • encoding utf-8 para tildes
  • crear file si no existe, usar os, path.exists()
  • timestamp
  • recorrer files por extensión y path (glob)
  • versión GUI todo app
  • meter en git
  • ejercicios y preguntas
    • ejercicios-01-todo-app
    • preguntas-01-todo-app
  • actualizar pip y PySimpleGUI
    • python -m pip install --upgrade PySimpleGUI
    • python -m pip install --upgrade pip
  • instalar jupyter en entorno env
    • pip install jupyterlab
    • pip install notebook
  • gestionar vulnerabilidades y entornos
    • python-avanzado-Apuntes > anaconda, entorno virtual
    • instalar pipenv

Todo app intro

  • uso de dir(), help()
  • control de flujo: match/if, for, strip, _, bitwise OR |
  • iteración en strings, mutabilidad, replace(), tuplas, enumerate(), index, remove(), clear(), pop()
  • métodos: len(), title(), capitalize(), sort(), type()
  • manejo de archivos: open(), read(), write(), writelines(), readlines(), close()
  • cursor de archivos
  • data types, separador \, with context manager
  • paradigma MVP
  • operadores: in, list slicing, or, not
  • validaciones: isdigit(), isupper(), all()
  • uso de dicts, values()
  • startswith(), continue en try dentro de while
  • exit(), funciones, NoneType, slicing, sum(), len()
  • decoupling, split(), float(), [], parámetros por defecto, docstrings
  • imports condicionales con if __name__ == "__main__":
  • módulo time: strftime("")
  • módulos: csv, glob, webbrowser, shutil
  • glob para recorrer extensiones
  • manejo de CSV: iteradores, list() y list of lists
  • shutil → make_archive() (zip)
  • webbrowser.open() búsquedas
  • JSON
    • loads(), manejo cuando llega como lista u objeto
    • errores típicos si no viene como lista

GUI todo app

  • PySimpleGUI
  • PyPI pysimplegui 4
  • apps: file compressor GUI, todo GUI
  • event & values, asignación múltiple
  • métodos: read(), close(), Text(), InputText(), Button(), Window(), tooltip, key, layout, font
  • Listbox, values, enable_element, size, index(), actualización con window[""].update()
  • value=values["todos"][0]
  • salir con exit() o break
  • layout dinámico mediante append
  • timeout para refrescar hora
  • image_source, mouseover_colors, tooltip, key
  • problemas comunes
    • value error al indexar edit todo
    • index error
    • saltos de línea inesperados
    • NoneType no suscriptable
    • valueerror al completar elemento inexistente
    • valueerror al editar varias veces

GUI file compress

  • zipfile, split(), ZipFile(), write(), pathlib Path()
  • problema del filepath completo → usar arcname=
  • convertir filepath en instancia Path por iteración
  • actualización de Text() con update()
  • errores
    • NoneType error
    • no seleccionar múltiples archivos en Windows
    • label no visible sin usar size=
  • zip extractor: ZipFile(), extractall(), paths absolutas, utils_compress.py

Web app todo app

  • PWA, streamlit
  • widgets básicos: title, subheader, write, text_input
  • session_state[] diccionario
  • error de keys duplicadas en loops → asignar key única
  • pop(), borrar con del, experimental_rerun()
  • unsafe_allow_html, set_page_config
  • webcam app
    • filtro gris con PIL
    • camera_input
    • Image.open(), convert(“L”)
    • manejar NoneType por permisos
    • expander(“Start”), image()

Deploy

  • ejecutables
  • clonar repos, requirements.txt
    • pip install -r requirements.txt
  • git
  • pip freeze > requirements.txt
  • .gitignore
  • deploy github + streamlit
  • PaaS vs IaaS
  • deploy en Heroku
    • procfile y setup.sh
      • web: sh setup.sh && streamlit run home.py

Resumen python basics

  • float(), return, upper, capitalize, title, append()
  • mutabilidad, sort(), dir(), methods
  • tuplas, listas, indexing, slicing
  • dicts, lista de dicts, dict de listas
    • persons1[2]["first name"]
    • persons["first name"][2]
  • len(), read(), readlines(), strip(), write(), writelines()
  • errores comunes: SyntaxError, ValueError, NameError, AttributeError
  • diferencia módulos vs librerías

02-Web app