{"id":14989199,"url":"https://github.com/fabianabarca/python","last_synced_at":"2025-04-05T00:08:28.470Z","repository":{"id":41197640,"uuid":"261652902","full_name":"fabianabarca/python","owner":"fabianabarca","description":"Tutoriales de Python para el análisis de datos en el curso IE0405 - \"Modelos Probabilísticos de Señales y Sistemas\" de la Universidad de Costa Rica.","archived":false,"fork":false,"pushed_at":"2024-03-19T04:47:40.000Z","size":1067,"stargazers_count":384,"open_issues_count":1,"forks_count":165,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-03-28T23:05:54.565Z","etag":null,"topics":["jupyter","matplotlib","numpy","pandas","python","scipy"],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc0-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fabianabarca.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-05-06T04:37:43.000Z","updated_at":"2025-03-02T21:15:50.000Z","dependencies_parsed_at":"2024-09-20T00:11:46.413Z","dependency_job_id":null,"html_url":"https://github.com/fabianabarca/python","commit_stats":{"total_commits":101,"total_committers":5,"mean_commits":20.2,"dds":0.3564356435643564,"last_synced_commit":"efc9e6866b357dee67dcf06c51472c63c043517d"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fabianabarca%2Fpython","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fabianabarca%2Fpython/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fabianabarca%2Fpython/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fabianabarca%2Fpython/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fabianabarca","download_url":"https://codeload.github.com/fabianabarca/python/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247266564,"owners_count":20910836,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["jupyter","matplotlib","numpy","pandas","python","scipy"],"created_at":"2024-09-24T14:17:51.067Z","updated_at":"2025-04-05T00:08:28.439Z","avatar_url":"https://github.com/fabianabarca.png","language":"Jupyter Notebook","readme":"# `python` - Modelos Probabilísticos de Señales y Sistemas\n\nEstos son archivos ejecutables tipo *notebook* de Jupyter, que llamaremos **PyX** (pronunciado \"pics\"), y que acompañan los temas del curso. Son una introducción a Python como lenguaje de programación y la presentación de algunas de sus herramientas más importantes para utilizar en problemas relacionados con la probabilidad, la estadística y el análisis de datos.\n\n\u003e **Nota**: para saber más sobre cómo instalar Jupyter y ejecutar los PyX, consultar [HOWTO.md](HOWTO.md).\n\n## Lista de tutoriales\n\nEstos son los temas cubiertos por cada archivo (*trabajo en progreso*).\n\n| Nombre | Tema | Librerías |\n| ------ | ---- | ---- |\n| `Py0`  | Introducción a Python |  |\n| `Py1`  | Funciones y librerías estándar | Math, Random... |\n| `Py2`  | Manipulación de datos  | Pandas |\n| `Py3`  | Librerías de computación científica | NumPy, SciPy, Matplotlib |\n| `Py4`  | Funciones estadísticas | Stats de SciPy |\n| `Py5`  | Curvas de ajuste y modelos estadísticos para datos | Fitter |\n| `Py6`  | Intercambio de datos con servicios web | Requests |\n| `Py7`  | Graficación estadística  | Seaborn |\n\nPendientes:\n\n| Nombre | Tema | Librerías |\n| ------ | ---- | ---- |\n| `Py8`  | Bases de datos SQL con Python | SQLite |\n| `Py9`  | Principios de programación orientada a objetos |  |\n| `Py10` | Documentación de código | Sphinx |\n\n## Algunos consejos de la *Guía de estilo para código de Python* (PEP 8)\n\nPEP 8 es una guía para que el código escrito en Python tenga una consistencia agradable a la vista. Pueden hacer lectura completa en la página oficial de [PEP 8](https://www.python.org/dev/peps/pep-0008/).\n\nAquí mostraremos solamente la síntesis de unas cuantas recomendaciones que serán **regla** para el curso.\n\n### Cosas que fastidian (*pet peeves*)\n\n* Evitar espacios en blanco en medio de paréntesis redondos o cuadrados, o llaves.\n\n:white_check_mark: **Correcto**\n```python\nspam(ham[1], {eggs: 2})\n```\n:x: ***Incorrecto***\n```\nspam( ham[ 1 ], { eggs: 2 } )\n```\n\n* Evitar espacios en blanco entre una coma final y un paréntesis cerrado siguiente:\n\n:white_check_mark: **Correcto**\n```python\nfoo = (0,)\n```\n:x: ***Incorrecto***\n```\nbar = (0, )\n```\n\n* Evitar espacios en blanco inmediatamente antes de una coma, punto y coma o dos puntos:\n\n:white_check_mark: **Correcto**\n```python\nif x == 4: print x, y; x, y = y, x\n```\n:x: ***Incorrecto***\n```\nif x == 4 : print x , y ; x , y = y , x\n```\n\n* A pesar de lo anterior, en un segmento los dos puntos actúan como un operador binario y debe tener cantidades iguales en ambos lados:\n\n:white_check_mark: **Correcto**\n```python\nham[1:9], ham[1:9:3], ham[:9:3], ham[1::3], ham[1:9:]\nham[lower:upper], ham[lower:upper:], ham[lower::step]\nham[lower+offset : upper+offset]\nham[: upper_fn(x) : step_fn(x)], ham[:: step_fn(x)]\nham[lower + offset : upper + offset]\n```\n:x: ***Incorrecto***\n```\nham[lower + offset:upper + offset]\nham[1: 9], ham[1 :9], ham[1:9 :3]\nham[lower : : upper]\nham[ : upper]\n```\n\n* Evitar espacios en blanco inmediatamente antes del paréntesis abierto que inicia la lista de argumentos de una llamada de función:\n\n:white_check_mark: **Correcto**\n```python\nspam(1)\n```\n:x: ***Incorrecto***\n```\nspam (1)\n```\n\n* Evitar espacios en blanco inmediatamente antes del paréntesis abierto que comienza una indexación o corte:\n\n:white_check_mark: **Correcto**\n```python\ndct['key'] = lst[index]\n```\n:x: ***Incorrecto***\n```\ndct ['key'] = lst [index]\n```\n\n* Evitar más de un espacio alrededor de un operador de asignación (u otro) para alinearlo con otro:\n\n:white_check_mark: **Correcto**\n```python\nx = 1\ny = 2\nlong_variable = 3\n```\n:x: ***Incorrecto***\n```\nx             = 1\ny             = 2\nlong_variable = 3\n```\n\n#### Otras recomendaciones\n\n* Evitar dejar espacios en blanco en cualquier lugar. Debido a que generalmente es invisible, puede ser confuso para algunos editores de texto.\n\n* Siempre rodear estos operadores binarios con un solo espacio a cada lado: asignación (`=`), la asignación aumentada (`+=`, `-=`, etc.), las comparaciones (`==`, `\u003c`, `\u003e`, `!=`, `\u003c\u003e`, `\u003c=`, `\u003e=`, `in`, `not in`, `is`, `is not`), Booleans (`and`, `or`, `not`).\n\n* Si se utilizan operadores con diferentes prioridades, considerar agregar espacios en blanco alrededor de los operadores con las prioridades más bajas:\n\n:white_check_mark: **Correcto**\n```python\ni = i + 1\nsubmitted += 1\nx = x*2 - 1\nhypot2 = x*x + y*y\nc = (a+b) * (a-b)\n```\n:x: ***Incorrecto***\n```\ni=i+1\nsubmitted +=1\nx = x * 2 - 1\nhypot2 = x * x + y * y\nc = (a + b) * (a - b)\n```\n\n* No usar espacios alrededor del signo `=` cuando se usa para indicar un argumento de palabra clave, o cuando se usa para indicar un valor predeterminado para un parámetro de función:\n\n:white_check_mark: **Correcto**\n```python\ndef complex(real, imag=0.0):\n    return magic(r=real, i=imag)\n```\n:x: ***Incorrecto***\n```\ndef complex(real, imag = 0.0):\n    return magic(r = real, i = imag)\n```\n\n* Las declaraciones compuestas (declaraciones múltiples en la misma línea) generalmente no se aconsejan:\n\n:white_check_mark: **Correcto**\n```python\nif foo == 'blah':\n    do_blah_thing()\ndo_one()\ndo_two()\ndo_three()\n```\n:x: ***Incorrecto***\n```\nif foo == 'blah': do_blah_thing()\ndo_one(); do_two(); do_three()\n```\n\n### Comentarios\n\nEl código, desde un inicio, estará comentado ampliamente.\n\nLos comentarios tendrán el siguiente formato:\n\n* Una línea en blanco encima (excepto si siguen la norma de *docstrings*)\n* Un espacio entre \\# y la primera letra\n* Primera letra mayúscula\n* Texto en español con toda la puntuación y acentos necesarios (el código fuente de Python acepta UTF-8, entre otras codificaciones internacionales)\n\n**Ejemplo**\n\n```python\nimport numpy as np\nfrom scipy import stats\n\n# Número de muestras\nN = 500\n\n# ¿Variable aleatoria de la simulación?\nX = stats.norm(0, 1)\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffabianabarca%2Fpython","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffabianabarca%2Fpython","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffabianabarca%2Fpython/lists"}