-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathexisting_format.json
More file actions
75 lines (75 loc) · 40.9 KB
/
existing_format.json
File metadata and controls
75 lines (75 loc) · 40.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
{"index":11,"description":"Activar Entorno Virtual venv","language":"sh","code":"source venv/bin/activate","extension":".sh","tags":["entorno","virtual","activar","shell"],"date":"2025-07-29T00:00:00Z","updated":"2025-07-31T05:05:14.295836780Z"}
{"index":12,"description":"Sincronizar Snippets hacia Git_Hub","language":"sh","code":"the-way sync local","extension":".sh","tags":["sincronizar","nube","snippets"],"date":"2025-07-29T18:54:29.639111874Z","updated":"2025-07-29T18:54:29.639139362Z"}
{"index":13,"description":"Cargar Lista de Archivos CSV Presentes en el Directorio Actual","language":"python","code":"import os\nfrom datetime import datetime\n\n# Obtener la lista de archivos en el directorio actual\narchivos = os.listdir('.')\n\n# Filtrar los archivos que terminan en .csv\narchivos_csv = [archivo for archivo in archivos if archivo.endswith('.csv')]\n\n# Imprimir la lista de archivos CSV con sus fechas y horas de creación\nfor archivo in archivos_csv:\n # Obtener la ruta completa del archivo\n ruta_completa = os.path.join('.', archivo)\n\n # Obtener la fecha y hora de creación del archivo\n fecha_creacion = os.path.getctime(ruta_completa)\n fecha_creacion_formateada = datetime.fromtimestamp(fecha_creacion).strftime('%Y-%m-%d %H:%M:%S')\n\n # Imprimir el nombre del archivo y su fecha y hora de creación en líneas separadas\n print(f'Archivo: {archivo}')\n print(f'Creado el: {fecha_creacion_formateada}')\n print() # Línea en blanco para separar cada archivo","extension":".py","tags":[""],"date":"2025-07-29T00:00:00Z","updated":"2025-07-29T20:56:53.368878261Z"}
{"index":14,"description":"Cargar Archivo CSV a Pandas y Presentar Primeras Filas","language":"python","code":"import pandas as pd\n\n# Ruta al archivo\nruta_archivo = \"sales_marketing_creative_tasks_20250720_133223.csv\"\n\n# Importar el archivo CSV en un DataFrame de pandas\ndf = pd.read_csv(ruta_archivo)\ndf.head()","extension":".py","tags":[""],"date":"2025-07-29T19:20:31.059088303Z","updated":"2025-07-29T19:20:47.462549401Z"}
{"index":15,"description":"Presentar Primeras Filas Pandas","language":"python","code":"df.head()","extension":".py","tags":[""],"date":"2025-07-29T00:00:00Z","updated":"2025-07-29T19:22:24.318791146Z"}
{"index":16,"description":"Ver la Forma de un Dataframe de Pandas","language":"python","code":"df.shape","extension":".py","tags":[""],"date":"2025-07-29T19:25:39.107722458Z","updated":"2025-07-29T19:25:56.666932215Z"}
{"index":17,"description":"Leer Directorio Actual","language":"python","code":"import os\n\n# Obtener el directorio actual\ndirectorio_actual = os.getcwd()\n\n# Imprimir el directorio actual\nprint(directorio_actual)","extension":".py","tags":[""],"date":"2025-07-29T20:58:20.952546598Z","updated":"2025-07-29T20:58:36.432698806Z"}
{"index":18,"description":"Listar Todas las Columnas en Dataframe de Pandas y Copiarlas en el Portapapeles","language":"python","code":"import pandas as pd\n\n# Supongamos que tienes un DataFrame llamado df\n# df = pd.read_csv('ruta/al/archivo.csv') # Ejemplo de cómo leer un DataFrame desde un archivo CSV\n\n# Obtener los nombres de las columnas\nnombres_columnas = df.columns\n\n# Imprimir cada nombre de columna en una línea separada\n#for columna in nombres_columnas:\n# print(columna)\n\n# Crear una cadena con cada nombre de columna en una línea separada\nsalida = '\\n'.join(nombres_columnas)\n\n# Copiar la salida al portapapeles\npyperclip.copy(salida)\n\n# Imprimir la salida para verificar\nprint(salida)","extension":".py","tags":[""],"date":"2025-07-29T20:59:44.380664352Z","updated":"2025-07-29T21:00:29.568051425Z"}
{"index":19,"description":"Instalar un Paquete Desde Celda de Jupyter","language":"python","code":"!pip install","extension":".py","tags":[""],"date":"2025-07-29T21:01:18.810464592Z","updated":"2025-07-29T21:01:33.436297374Z"}
{"index":2,"description":"Editor por Defecto en The Way","language":"shell","code":"export EDITOR=nano","extension":".sh","tags":["Way","Editor"],"date":"2025-07-29T04:53:43.242728813Z","updated":"2025-07-29T04:53:43.242729006Z"}
{"index":20,"description":"Editar Configuración Personal en Nano","language":"sh","code":"nano ~/.bashrc","extension":".sh","tags":[""],"date":"2025-07-29T21:04:37.434436373Z","updated":"2025-07-29T21:04:37.434437456Z"}
{"index":21,"description":"Retroceder al Directorio Padre en Jupyter","language":"python","code":"import os\n\n# Obtener el directorio actual\ndirectorio_actual = os.getcwd()\nprint(f\"Directorio actual: {directorio_actual}\")\n\n# Cambiar al directorio padre\nos.chdir('..')\n\n# Obtener el nuevo directorio actual\nnuevo_directorio_actual = os.getcwd()\nprint(f\"Nuevo directorio actual: {nuevo_directorio_actual}\")","extension":".py","tags":[""],"date":"2025-07-29T21:06:29.822033300Z","updated":"2025-07-29T21:06:46.126892380Z"}
{"index":22,"description":"Mostrar Valores Únicos en Columna","language":"python","code":"# Mostrar valores únicos si la columna es categórica\nvalores_unicos = df[\"Nombre_de_Columna\"].unique()\nprint(valores_unicos)","extension":".py","tags":[""],"date":"2025-07-29T21:08:23.558152579Z","updated":"2025-07-29T21:09:02.008415918Z"}
{"index":23,"description":"Describir una Columna Pandas con Estadísticas Básicas","language":"python","code":"df['Nombre_de_la_columnna'].describe()","extension":".py","tags":[""],"date":"2025-07-29T21:09:56.650038239Z","updated":"2025-07-29T21:10:23.922090469Z"}
{"index":24,"description":"Presentar el Tipo de Dato de Cada Columna y Pegarla en el Portapapeles","language":"python","code":"import pandas as pd\nimport pyperclip\n\n# Crear un DataFrame de ejemplo\n#data = {\n# 'Nombre': ['Juan', 'Ana', 'Luis'],\n# 'Edad': [28, 24, 35],\n# 'Ciudad': ['Madrid', 'Barcelona', 'Valencia'],\n# 'Saldo': [1500.50, 2300.75, 1800.20]\n#}\n#df = pd.DataFrame(data)\n\n# Obtener los tipos de datos de cada columna\ntipos_de_datos = df.dtypes\n\n# Crear una cadena con los tipos de datos de cada columna, con el tipo de dato entre comillas\nsalida = '\\n'.join([f\"La columna '{columna}' es de tipo '{tipo}'\" for columna, tipo in tipos_de_datos.items()])\n\n# Copiar la salida al portapapeles\npyperclip.copy(salida)\n\n# Imprimir la salida para verificar\nprint(salida)","extension":".py","tags":[""],"date":"2025-07-29T00:00:00Z","updated":"2025-07-29T22:15:07.716794086Z"}
{"index":25,"description":"Prompt para Pedir un Resumen de la Lección en ChatGPT","language":"plaintext","code":"Por favor, analiza toda la conversación anterior y genera una relación de los temas tratados en esta lección, seguida de un resumen estructurado de las ideas clave, usando el siguiente formato:\n\nRelación de Temas Tratados en la Lección:\n- [Tema 1]\n- [Tema 2]\n- [Tema 3]\n- [Agregar más según corresponda]\n\nResumen del Chat:\n1. Tema principal de la lección: [Describe brevemente el eje central de la lección.]\n2. Puntos clave:\n - [Idea o concepto importante #1]\n - [Idea o concepto importante #2]\n - [Idea o concepto importante #3]\n - [Agregar más según sea necesario]\n3. Conclusión o próximos pasos: [Indica conclusiones relevantes o recomendaciones sugeridas durante la lección.]\n\nPor favor, utiliza siempre este formato cuando te pida una relación y resumen de la lección, sin importar el momento en que lo solicite.","extension":".txt","tags":["chat","agente","chatgpt","claude"],"date":"2025-07-30T22:15:46.901719179Z","updated":"2025-07-30T22:16:09.133806562Z"}
{"index":26,"description":"Prompt para Diagnosticar Calidad de Dataset","language":"markdown","code":"## 🎯 **SOLICITUD DE DIAGNÓSTICO DE CALIDAD DE DATOS**\n\nActúa como mi **experto en calidad de datos** con metodología científica. Tu misión es realizar un diagnóstico exhaustivo del archivo CSV que te proporciono, usando **Python, TDD y análisis estadístico completo**.\n\n### **📋 ARCHIVO A ANALIZAR:**\n- **Ruta:** `{{ruta_del_archivo_csv}}`\n- **Nombre del reporte:** `{{nombre_del_reporte}}`\n\n---\n\n## 🔬 **PROTOCOLO OBLIGATORIO:**\n\n1. **Usar `sequentialthinking` para planificación**\n2. **Activar entorno virtual existente** \n3. **Validar dependencias nuevas con `brave_web_search`** (autenticidad, anti-slopsquatting)\n4. **Aplicar TDD con pytest**\n5. **Actualizar memoria tras cada hito**\n6. **Generar reporte markdown final**\n7. **Mantener comunicación clara**\n\n**⚠️ MOSTRAR PLAN ANTES DE PROCEDER.**\n\n---\n\n## 📊 **METODOLOGÍA DE ANÁLISIS (4 FASES TDD):**\n\n### **FASE 1: TESTS PRIMERO (TDD)**\n**Archivo:** `test_data_quality_{{nombre_dataset}}.py`\n\n**Tests obligatorios a crear:**\n- `test_dataset_dimensions()` → Verificar dimensiones del dataset\n- `test_data_types()` → Confirmar tipos de datos correctos/incorrectos \n- `test_missing_values_critical()` → Analizar valores faltantes críticos\n- `test_no_duplicates()` → Verificar ausencia de duplicados problemáticos\n- `test_email_formats()` → Validar formatos de campos críticos\n- `test_outliers_detection()` → Detectar valores atípicos\n- `test_categorical_consistency()` → Verificar consistencia categórica\n\n### **FASE 2: ANÁLISIS EXHAUSTIVO**\n**Archivo:** `comprehensive_analysis_{{nombre_dataset}}.py`\n\n**Implementar funciones:**\n```python\ndef analyze_structure_completeness(df)\ndef analyze_data_distributions(df) \ndef analyze_duplicates_detailed(df)\ndef analyze_missing_patterns(df)\ndef analyze_categorical_inconsistencies(df)\ndef analyze_outliers_statistical(df)\ndef analyze_format_validation(df)\ndef generate_data_quality_score(df)\n```\n\n### **FASE 3: VALIDACIÓN CRUZADA**\n- **Ejecutar pytest con verbose:** Confirmar todos los hallazgos\n- **Análisis estadístico completo:** Estadísticas descriptivas y distribuciones\n- **Visualizaciones opcionales:** Si se requieren gráficos para el reporte\n\n### **FASE 4: REPORTE CIENTÍFICO**\n**Archivo:** `{{nombre_del_reporte}}_Diagnostico_Completo.md`\n\n---\n\n## 📋 **ESTRUCTURA DEL REPORTE FINAL:**\n\n### **🎯 Resumen Ejecutivo**\n- **Metodología aplicada:** TDD + Python + Análisis estadístico\n- **Estado de validación:** ✅ VALIDADO CON CÓDIGO\n- **Dimensiones del dataset:** [filas] × [columnas]\n- **Principales hallazgos:** Top 5 problemas críticos\n- **Conclusión científica:** Nivel de limpieza requerido\n\n### **📊 Análisis Detallado por Fase**\n1. **Estructura y Completitud**\n - Tipos de datos incorrectos identificados\n - Porcentajes de valores faltantes por columna\n - Columnas críticas con alta proporción de faltantes\n\n2. **Inconsistencias y Outliers** \n - Distribución de datos categóricos\n - Valores atípicos estadísticamente significativos\n - Inconsistencias en formatos detectadas\n\n3. **Duplicados y Integridad**\n - Duplicados completos y parciales\n - Integridad referencial entre columnas\n - Validación de campos únicos (IDs, emails, etc.)\n\n4. **Calidad General**\n - **Score de calidad de datos** (0-100)\n - **Impacto en análisis posteriores**\n - **Tiempo estimado de limpieza**\n\n### **📈 Recomendaciones Estratégicas**\n1. **Correcciones Inmediatas:** Problemas críticos\n2. **Estrategia para Valores Faltantes:** Eliminación vs Imputación específica\n3. **Limpieza de Inconsistencias:** Plan paso a paso\n4. **Validación Continua:** Tests para prevenir regresiones\n\n### **💻 Código de Implementación**\n- Scripts Python generados durante el análisis\n- Comandos para replicar el diagnóstico\n- Tests para validación futura\n\n---\n\n## 🔧 **DEPENDENCIAS REQUERIDAS:**\n```python\npandas>=2.0.0\npytest>=8.0.0 \nnumpy>=1.24.0\nmissingno # Para visualización de valores faltantes (opcional)\n```\n\n---\n\n## 🚀 **RESULTADO ESPERADO:**\n\nAl final del proceso tendré:\n1. ✅ **Suite completa de tests TDD**\n2. ✅ **Script de análisis exhaustivo** \n3. ✅ **Reporte markdown profesional**\n4. ✅ **Código reutilizable** para futuros diagnósticos\n5. ✅ **Validación científica** de todos los hallazgos\n\n---\n\n# NOTAS:\n(((\n\n## 📝 **INSTRUCCIONES DE USO:**\n\n```bash\n# Reemplaza estas variables:\n{{ruta_del_archivo_csv}} = \"ruta/al/archivo.csv\"\n{{nombre_del_reporte}} = \"Nombre_Reporte_Diagnostico\"\n{{nombre_dataset}} = \"nombre_descriptivo_dataset\"\n\n# Ejemplo:\n{{ruta_del_archivo_csv}} = \"data/ventas_2025.csv\"\n{{nombre_del_reporte}} = \"Ventas_2025_Diagnostico\"\n{{nombre_dataset}} = \"ventas_2025\"\n```\n)))","extension":".md","tags":["dataset","calidad","csv","análisis"],"date":"2025-07-30T00:00:00Z","updated":"2025-07-30T22:55:02.465942176Z"}
{"index":27,"description":"Conteo de Datos no Nulos en Columnas Dataframe Pandas","language":"python","code":"import pandas as pd\n\n# Suponiendo que tienes un DataFrame llamado 'df' y una columna llamada 'columna'\n# Para contar los valores no nulos en la columna 'columna'\nconteo_no_nulos = df['columna'].count()\n\nprint(f\"El número de valores no nulos en la columna es: {conteo_no_nulos}\")","extension":".py","tags":["dataframe","pandas","nulos","columnas"],"date":"2025-07-31T00:00:00Z","updated":"2025-07-31T00:24:41.766113523Z"}
{"index":28,"description":"Conteo de Datos No Nulos en Todo el Dataframe Pandas","language":"python","code":"# Para contar los valores no nulos en todas las columnas del DataFrame\nconteo_no_nulos_por_columna = df.count()\n\nprint(\"El número de valores no nulos por columna es:\")\nprint(conteo_no_nulos_por_columna)","extension":".py","tags":["dataframe","pandas","nulos"],"date":"2025-07-31T00:23:23.728797201Z","updated":"2025-07-31T00:23:42.757602826Z"}
{"index":29,"description":"Desplegar Lista de Archivos Python Editados el Día de Hoy","language":"sh","code":"find /ruta/al/archivo -name \"*.py\" -newermt \"2025-01-30\" -type f -ls","extension":".sh","tags":["archivos","editados","fecha","extension"],"date":"2025-07-31T01:01:31.407057604Z","updated":"2025-07-31T01:01:31.407059005Z"}
{"index":3,"description":"Recargar Configuración Personal","language":"shell","code":"source ~/.bashrc","extension":".sh","tags":["Config","Personal"],"date":"2025-07-29T04:53:43.242749789Z","updated":"2025-07-29T04:53:43.242749992Z"}
{"index":30,"description":"Extensión de Archivos Jupyter","language":"plaintext","code":".ipynb","extension":".txt","tags":["jupyter","python","extensión"],"date":"2025-07-31T01:16:26.606718807Z","updated":"2025-07-31T01:16:33.174974290Z"}
{"index":31,"description":"Reiniciar el Servicio de Portapapeles","language":"sh","code":"killall csd-clipboard && nohup /usr/bin/csd-clipboard > /dev/null 2>&1 &","extension":".sh","tags":["clipboard","servicio","reiniciar","portapapeles","matar"],"date":"2025-07-31T00:00:00Z","updated":"2025-07-31T04:00:04.696904521Z"}
{"index":32,"description":"Reiniciar Calc de OpenOffice Cuando se Congele","language":"sh","code":"pkill -f 'calc\\|soffice.*calc' && sleep 2 && libreoffice --calc > /dev/null 2>&1 &","extension":".sh","tags":["matar","kill","reiniciar"],"date":"2025-07-31T04:02:05.527472156Z","updated":"2025-07-31T04:02:05.527473119Z"}
{"index":33,"description":"Listar Solo Directorios en Shell","language":"sh","code":"ls -la | grep \"^d\"","extension":".sh","tags":["Directorios","shell","consola"],"date":"2025-07-31T04:19:17.943594560Z","updated":"2025-07-31T04:19:17.943596239Z"}
{"index":34,"description":"Crear Entorno Virtual Venv","language":"sh","code":"python3 -m venv venv","extension":".sh","tags":["entorno","virtual","venv","shell"],"date":"2025-07-31T04:28:36.366120936Z","updated":"2025-07-31T04:28:36.366139103Z"}
{"index":35,"description":"Editar Configuración Personal","language":"sh","code":"code ~/.bashrc","extension":".sh","tags":["editar","personal","bashrc"],"date":"2025-07-31T04:30:47.147976795Z","updated":"2025-07-31T04:30:47.147977858Z"}
{"index":36,"description":"Creación Archivo de Dependencias","language":"sh","code":"pip freeze > requirements.txt","extension":".sh","tags":["requirements","txt"],"date":"2025-07-31T05:08:35.974072638Z","updated":"2025-07-31T05:08:35.974073879Z"}
{"index":37,"description":"Instalar Dependencias Pip","language":"sh","code":"pip install -r requirements.txt","extension":".sh","tags":["pip","instalar","dependencias","txt","requirements"],"date":"2025-07-31T05:09:55.381410609Z","updated":"2025-07-31T05:09:55.381430350Z"}
{"index":38,"description":"Iniciar Servicio CopyQ Portapapeles","language":"sh","code":"copyq &","extension":".sh","tags":["copyq","clipboard","portapapeles"],"date":"2025-07-31T17:28:24.921990330Z","updated":"2025-07-31T17:28:24.921991326Z"}
{"index":39,"description":"Despliega Menú CLI de CopyQ Portapapeles","language":"sh","code":"kc","extension":".sh","tags":["copyq","clipoard","portapapeles"],"date":"2025-07-31T17:30:02.678601981Z","updated":"2025-07-31T17:30:02.678620551Z"}
{"index":4,"description":"Editar Configuración Personal","language":"shell","code":"code ~/.bashrc","extension":".sh","tags":["Config","Personal"],"date":"2025-07-29T04:53:43.242721810Z","updated":"2025-07-29T04:53:43.242722671Z"}
{"index":40,"description":"Pegar la Salida de un Comando al Portapapeles","language":"sh","code":"| xsel --clipboard","extension":".sh","tags":["shell","clipboard","portapapeles","shell"],"date":"2025-07-31T19:19:28.223240623Z","updated":"2025-07-31T19:19:28.223241741Z"}
{"index":42,"description":"Iniciar Jupyter Local","language":"shellscript","code":"cd /home/joselillo/proyectos/Automatizacion\nsource venv/bin/activate\njupyter-lab","extension":".txt","tags":["jupyter","notebook","python"],"date":"2025-08-01T18:52:20.850810238Z","updated":"2025-08-01T18:53:00.170030707Z"}
{"index":43,"description":"Abrir Archivo CSV en Pandas usado en Datalab y Describir Tamaño","language":"python","code":"df = pd.read_csv('./clickup_sales_marketing_creative_complete_20250729_140944.csv')\nrows_new, columns_new = df_new.shape\nrows_new, columns_new","extension":".py","tags":["pandas","csv","archivo","python","shape"],"date":"2025-08-01T00:00:00Z","updated":"2025-08-01T19:27:53.438873118Z"}
{"index":44,"description":"Inicia Servicio de Ocultación de Puntero del Mouse al Escribir","language":"sh","code":"xbanish &","extension":".sh","tags":["mouse","puntero","escribir","escritura"],"date":"2025-08-01T23:34:05.919634665Z","updated":"2025-08-01T23:34:05.919635840Z"}
{"index":45,"description":"Matar un Proceso por Nombre","language":"sh","code":"pkill # Solo agrega el nombre del servicio a matar","extension":".sh","tags":["kill","pkill","matar","proceso","PID"],"date":"2025-08-01T23:37:37.926342130Z","updated":"2025-08-01T23:37:37.926343116Z"}
{"index":46,"description":"Matar un Proceso por Número de PID","language":"sh","code":"kill","extension":".sh","tags":["pid","matar","kill","proceso"],"date":"2025-08-01T23:38:27.938593004Z","updated":"2025-08-01T23:38:27.938594157Z"}
{"index":47,"description":"Consulta el PID de un proceso para posteriormente matarlo con \"kill\"","language":"sh","code":"ps aux | grep # Agregar el nombre del proceso para buscar el PID","extension":".sh","tags":["kill","PID","matar","proceso"],"date":"2025-08-01T23:41:01.802198343Z","updated":"2025-08-01T23:41:01.802199296Z"}
{"index":48,"description":"Ver Archivo de Configuración de Aider","language":"sh","code":"/home/joselillo/proyectos/Automatizacion/.aider.conf.yml","extension":".sh","tags":["aider"],"date":"2025-08-02T02:07:11.910517145Z","updated":"2025-08-02T02:07:11.910518261Z"}
{"index":49,"description":"Buscar Fragmentos de Texto","language":"sql","code":"SELECT *\nFROM tu_tabla\nWHERE tu_columna LIKE '%fragmento%';","extension":".sql","tags":["query","sql","like"],"date":"2025-08-03T19:05:23.783761907Z","updated":"2025-08-03T19:06:11.742412857Z"}
{"index":5,"description":"Editar archivo de gitignore para agregar lista de archivos que no se suben al repositorio","language":"sh","code":"nano .gitignore","extension":".sh","tags":["git","repositorio"],"date":"2025-07-29T05:15:56.383563858Z","updated":"2025-07-29T05:15:56.383590352Z"}
{"index":50,"description":"Buscar Fragmento Isnsensible a Mayusculas","language":"sql","code":"SELECT *\nFROM tu_tabla\nWHERE tu_columna ILIKE '%fragmento%';","extension":".sql","tags":["query","mayusculas","minusculas","sql"],"date":"2025-08-03T19:07:07.450011018Z","updated":"2025-08-03T19:07:25.639577091Z"}
{"index":51,"description":"Fragmento Búsqueda de Fragmento de Texto","language":"sql","code":"LIKE '%fragmento%'","extension":".sql","tags":["query","sql","fragmento","texto","búsqueda"],"date":"2025-08-03T19:13:54.899108230Z","updated":"2025-08-03T19:14:01.482939314Z"}
{"index":52,"description":"Busqueda Fragmento de Texto Negado NOT","language":"sql","code":"SELECT nombre FROM personas WHERE nombre NOT LIKE '%A%';\n-- Excluye en este ejemplo todo nombre con la letra A","extension":".sql","tags":["not","like","query","sql"],"date":"2025-08-03T00:00:00Z","updated":"2025-08-03T22:35:38.611728739Z"}
{"index":53,"description":"Busca Texto Específico que Termina con Letra y Número Exacto de Caracteres","language":"sql","code":"SELECT nombre FROM personas WHERE nombre LIKE '__e';\n-- Coincide con nombres de 3 letras terminados en 'e': Eve, Joe, etc.","extension":".sql","tags":["sql","query","like","caracteres"],"date":"2025-08-03T22:37:50.587075623Z","updated":"2025-08-03T22:38:09.363515838Z"}
{"index":54,"description":"Busca Coincidencia Entre Opciones Específicas","language":"sql","code":"SELECT titulo FROM peliculas WHERE release_year IN (1920, 1930, 1940);\n-- Busca películas de esos años.","extension":".sql","tags":["query","in","sql","números"],"date":"2025-08-03T00:00:00Z","updated":"2025-08-03T22:42:14.019344654Z"}
{"index":55,"description":"Funciones de Agregación SQL","language":"sql","code":"SELECT COUNT(*) FROM peliculas;\nSELECT AVG(presupuesto) FROM peliculas;\nSELECT SUM(presupuesto) FROM peliculas;\nSELECT MIN(presupuesto) FROM peliculas; -- Funciona también con caracteres de A a Z\nSELECT MAX(presupuesto) FROM peliculas; -- Funciona también con caracteres de A a Z","extension":".sql","tags":["sql","funciones","agregación","min","max","avg","count","sum"],"date":"2025-08-04T00:00:00Z","updated":"2025-08-04T00:57:43.672497373Z"}
{"index":56,"description":"Uso de ROUND para Redondeo en Funciones de Agregación SQL","language":"sql","code":"-- Redondear el promedio del presupuesto a 2 decimales\nSELECT ROUND(AVG(presupuesto), 2) -- ROUND recibe dos parámetros: el número y la cantidad de decimales. Aquí muestra 2 decimales.\nFROM peliculas\nWHERE anio_estreno >= 2010;\n\n-- Redondear el promedio del presupuesto a un número entero\nSELECT ROUND(AVG(presupuesto)) -- Si no colocas el segundo parámetro, SQL lo toma como 0 por defecto. El resultado es un número entero.\nFROM peliculas\nWHERE anio_estreno >= 2010;\n\n-- También podrías ser explícito y pasar el cero:\nSELECT ROUND(AVG(presupuesto), 0) -- Esto hace exactamente lo mismo que el ejemplo anterior.\n\n-- Redondear el presupuesto total a la centena de millar\nSELECT ROUND(SUM(presupuesto), -5) -- Si el segundo parámetro es negativo, redondea a la izquierda del punto decimal.\n -- En este caso, \"-5\" significa redondear hasta la centena de millar (5 posiciones a la izquierda).\nFROM peliculas\nWHERE anio_estreno = 2010;\n\n-- Recuerda:\n-- - El primer parámetro siempre es el número que quieres redondear (puede ser el resultado de una función como SUM, AVG, etc.).\n-- - El segundo parámetro es opcional y define a cuántos decimales (o dígitos a la izquierda si es negativo) quieres redondear.\n-- - Si el segundo parámetro es 0 o se omite, se redondea al número entero más cercano.\n-- - Si el segundo parámetro es negativo, redondea hacia valores como decenas, centenas, miles, etc.","extension":".sql","tags":["sql","round","funciones","agregación","redondeo"],"date":"2025-08-04T00:00:00Z","updated":"2025-08-04T01:24:54.226440806Z"}
{"index":57,"description":"Funciones de Redondeo de Cifras con ROUND en Funciones de Agregación","language":"sql","code":"-- Redondear el promedio del presupuesto a 2 decimales\nSELECT ROUND(AVG(presupuesto), 2) -- ROUND recibe dos parámetros: el número y la cantidad de decimales. Aquí muestra 2 decimales.\nFROM peliculas\nWHERE anio_estreno >= 2010;\n\n-- Redondear el promedio del presupuesto a un número entero\nSELECT ROUND(AVG(presupuesto)) -- Si no colocas el segundo parámetro, SQL lo toma como 0 por defecto. El resultado es un número entero.\nFROM peliculas\nWHERE anio_estreno >= 2010;\n\n-- También podrías ser explícito y pasar el cero:\nSELECT ROUND(AVG(presupuesto), 0) -- Esto hace exactamente lo mismo que el ejemplo anterior.\n\n-- Redondear el presupuesto total a la centena de millar\nSELECT ROUND(SUM(presupuesto), -5) -- Si el segundo parámetro es negativo, redondea a la izquierda del punto decimal.\n -- En este caso, \"-5\" significa redondear hasta la centena de millar (5 posiciones a la izquierda).\nFROM peliculas\nWHERE anio_estreno = 2010;\n\n-- Recuerda:\n-- - El primer parámetro siempre es el número que quieres redondear (puede ser el resultado de una función como SUM, AVG, etc.).\n-- - El segundo parámetro es opcional y define a cuántos decimales (o dígitos a la izquierda si es negativo) quieres redondear.\n-- - Si el segundo parámetro es 0 o se omite, se redondea al número entero más cercano.\n-- - Si el segundo parámetro es negativo, redondea hacia valores como decenas, centenas, miles, etc.","extension":".sql","tags":["sql","funciones","agregación","round","redondeo"],"date":"2025-08-04T05:10:58.618667429Z","updated":"2025-08-04T05:11:59.356590862Z"}
{"index":58,"description":"Operaciones en SQL","language":"sql","code":"SELECT 3 + 2 AS suma,\n 5 - 1 AS resta,\n 2 * 4 AS multiplicacion,\n 4 / 2 AS division;\n\nSELECT 4 / 3 AS division_entera, -- Resultado: 1 (entero)\n 4.0 / 3.0 AS division_decimal; -- Resultado: 1.333... (decimal)\n\nSELECT titulo,\n bruto - presupuesto AS beneficio\nFROM peliculas;","extension":".sql","tags":["sql","operaciones","matemáticas","suma","resta","multiplicación","divición"],"date":"2025-08-04T15:01:45.400386793Z","updated":"2025-08-04T15:03:25.037565769Z"}
{"index":59,"description":"Subconsulta Básica SQL","language":"sql","code":"[200~SELECT *\nFROM (\n SELECT bruto - presupuesto AS beneficio\n FROM peliculas\n) sub\nWHERE beneficio > 1000000;","extension":".sql","tags":["subconsulta","sql","query"],"date":"2025-08-04T15:04:13.944523037Z","updated":"2025-08-04T15:04:29.957292838Z"}
{"index":6,"description":"Invocar Variable de Entorno","language":"python","code":"x = os.environ.get(\"X\")","extension":".py","tags":["variable","entorno"],"date":"2025-07-29T18:07:08.671163348Z","updated":"2025-07-29T18:07:40.813580435Z"}
{"index":60,"description":"Alias SQL","language":"sql","code":"SELECT SUM(bruto) AS total_ganancias,\n SUM(presupuesto) AS total_costos\nFROM peliculas;","extension":".sql","tags":["alias","sql","query"],"date":"2025-08-04T15:05:13.456103210Z","updated":"2025-08-04T15:12:22.638711673Z"}
{"index":61,"description":"Ordenar Campos Order By","language":"sql","code":"--Ejemplo 1\n\nSELECT titulo\nFROM peliculas\nORDER BY anio_publicacion;\n\n--Ejemplo 2\n\nSELECT nombre, fecha_nacimiento\nFROM actores\nORDER BY fecha_nacimiento ASC, nombre DESC;","extension":".sql","tags":["order","by","sql","ordenar","campos"],"date":"2025-08-04T17:25:52.556679995Z","updated":"2025-08-04T17:27:12.136333792Z"}
{"index":62,"description":"Group By Ordenar Por Campo","language":"sql","code":"SELECT certificacion, COUNT(titulo) AS cantidad_peliculas\nFROM peliculas\nGROUP BY certificacion\nORDER BY cantidad_peliculas DESC;","extension":".sql","tags":["group","by","sql","ordenar"],"date":"2025-08-04T19:07:38.395207779Z","updated":"2025-08-04T19:08:02.235404334Z"}
{"index":63,"description":"Filtrar Datos con HAVING en Funciones de Agregación","language":"sql","code":"-- Mostrar los años en los que se estrenaron más de 10 películas\nSELECT año_estreno, COUNT(*) AS num_peliculas\nFROM peliculas\nGROUP BY año_estreno\nHAVING COUNT(*) > 10;\n\n-- Ejemplo con HAVING (filtrando grupos)\nSELECT año_estreno, AVG(duracion) AS duracion_media\nFROM peliculas\nGROUP BY año_estreno\nHAVING AVG(duracion) > 120; -- 120 minutos = 2 horas\n\n-- FUNCIONA DE MANERA SIMILAR A WHERE, PERO CUANDO HAY INVOLUCRADAS FUNCIONES DE AGREGACIÓN","extension":".sql","tags":["filtrar","datos","having","funciones","agregación"],"date":"2025-08-04T00:00:00Z","updated":"2025-08-04T20:54:26.512233833Z"}
{"index":64,"description":"Distinct Presentación de Distintos Valores de un Campo","language":"sql","code":"SELECT DISTINCT country, certification\nFROM films;","extension":".sql","tags":["distinct","valores","query"],"date":"2025-08-05T01:06:33.197144966Z","updated":"2025-08-05T01:06:46.182338864Z"}
{"index":65,"description":"Distinct Uso Con Funciones de Agregación","language":"sql","code":"SELECT\n country,\n COUNT(DISTINCT certification) AS certification_count\nFROM\n films\nGROUP BY\n country\nHAVING\n COUNT(DISTINCT certification) > 10;","extension":".sql","tags":["distinct","funciones","agregación"],"date":"2025-08-05T01:08:01.195686537Z","updated":"2025-08-05T01:08:11.827684807Z"}
{"index":66,"description":"Inner Join solo devuelve los registros que tienen coincidencias en ambas tablas.","language":"sql","code":"SELECT *\nFROM tabla1\nINNER JOIN tabla2\nON tabla1.id = tabla2.id;\n\n-- Solo devuelve los registros que tienen coincidencias en ambas tablas.","extension":".sql","tags":["join","inner","query","sql","tablas"],"date":"2025-08-05T11:06:45.960780652Z","updated":"2025-08-05T11:07:52.655793771Z"}
{"index":67,"description":"USING en Uniones de Tablas con Columnas del MISMO NOMBRE","language":"sql","code":"-- Sin USING:\n\nSELECT presidentes.country, presidentes.nombre AS presidente, primeros_ministros.nombre AS primer_ministro\nFROM presidentes\nINNER JOIN primeros_ministros\nON presidentes.country = primeros_ministros.country;\t-- Detalle aquí, DISTINTAS tablas, nombre de columna IGUAL.\n\n-- Con USING\n\nSELECT country, presidentes.nombre AS presidente, primeros_ministros.nombre AS primer_ministro\nFROM presidentes\nINNER JOIN primeros_ministros\nUSING (country);\t-- Detalle aquí","extension":".sql","tags":["join","mismo","nombre","columna"],"date":"2025-08-05T11:49:57.966851004Z","updated":"2025-08-05T11:53:28.103847184Z"}
{"index":68,"description":"Relación Uno a Muchos en SQL entre Tablas","language":"text","code":" +---------+ +-----------+\n | AUTOR | | LIBROS |\n +---------+ +-----------+\n | id |<------+ | id |\n | nombre | | | titulo |\n +---------+ | | autor_id |\n | +-----------+\n |\n | +-----------+\n +-->| id |\n | | titulo |\n | | autor_id |\n | +-----------+\n |\n | +-----------+\n +-->| id |\n | titulo |\n | autor_id |\n +-----------+\n\nExplicación:\nUn autor puede tener muchos libros, \npero cada libro solo tiene un autor. \nEsto es típico en bases de datos: la tabla “muchos” (LIBROS) tiene una clave foránea (autor_id) \nque referencia la tabla “uno” (AUTOR).","extension":".txt","tags":["sql","relación","uno","muchos"],"date":"2025-08-05T17:58:03.982968055Z","updated":"2025-08-05T17:58:14.895571270Z"}
{"index":69,"description":"Relación Uno a Uno SQL Entre Tablas","language":"text","code":" +-----------+ +--------------------+\n | PERSONA | | HUELLAS_DACTILARES |\n +-----------+ +--------------------+\n | pasaporte |<-------> | pasaporte |\n | nombre | | huella |\n +-----------+ +--------------------+\n\nExplicación:\nCada persona tiene exactamente una huella digital registrada \ny cada huella digital pertenece a una sola persona. \nAmbas tablas se relacionan uno a uno a través del campo “pasaporte”.","extension":".txt","tags":["relación","uno","tablas","sql"],"date":"2025-08-05T18:01:11.791754175Z","updated":"2025-08-05T18:01:20.865088108Z"}
{"index":7,"description":"Prueba Test Token Variable de Entorno","language":"python","code":"if api_key:\n print(\"Tu clave es:\", api_key)\nelse:\n print(\"La variable CLICKUP_API_KEY no está definida.\")","extension":".py","tags":["variable","entorno","test"],"date":"2025-07-29T18:12:22.390696018Z","updated":"2025-07-29T18:12:37.547493700Z"}
{"index":70,"description":"Relación Muchos a Muchos SQL Entre Tablas","language":"relación muchos sql tablas","code":" +---------+ +----------------+ +---------+\n | PAISES | | PAIS_IDIOMA | | IDIOMAS |\n +---------+ +----------------+ +---------+\n | id |<---+ +->| pais_id |<---+ +->| id |\n | nombre | | | | idioma_id | | | | nombre |\n +---------+ | | +----------------+ | | +---------+\n | | | |\n | | | |\n ...| ...| |\n +---------------------------+\n\nExplicación:\nUn país puede tener varios idiomas oficiales \ny un idioma puede ser hablado en varios países. \nPara gestionar esta relación, se utiliza una tabla intermedia (PAIS_IDIOMA)\nque conecta ambos lados mediante claves foráneas.","extension":".txt","tags":["relación","muchos","sql","tablas"],"date":"2025-08-05T18:02:23.327308128Z","updated":"2025-08-05T18:03:14.838521661Z"}
{"index":71,"description":"JOIN Multiple de Tablas","language":"sql","code":"[200~SELECT *\nFROM presidents AS p\nINNER JOIN prime_ministers AS pm\n ON p.country = pm.country\nINNER JOIN prime_minister_terms AS pmt\n ON pm.prime_minister = pmt.prime_minister;","extension":".sql","tags":["join","multiple","tablas"],"date":"2025-08-07T00:00:00Z","updated":"2025-08-07T00:33:45.634537361Z"}
{"index":72,"description":"JOIN Vinvulando mas de una Columna","language":"sql","code":"SELECT *\nFROM left_table\nINNER JOIN right_table\n ON left_table.id = right_table.id\n AND left_table.date = right_table.date;","extension":".sql","tags":["join","columnas","sql","query"],"date":"2025-08-07T00:59:10.018562364Z","updated":"2025-08-07T00:59:21.737151889Z"}
{"index":73,"description":"LEFT JOIN SQL","language":"sql","code":"-- Ejemplo de LEFT JOIN\n-- Esta consulta selecciona todos los registros de la tabla de la izquierda (left_table)\n-- e intenta encontrar coincidencias en la tabla de la derecha (right_table) usando el campo \"id\".\n-- Si no hay coincidencia en right_table, los valores de sus columnas aparecerán como NULL.\nSELECT *\nFROM left_table\nLEFT JOIN right_table\n ON left_table.id = right_table.id;\n-- Resultado: Todas las filas de left_table aparecen.\n-- Si right_table no tiene coincidencia para algún \"id\" de left_table, las columnas de right_table muestran NULL.","extension":".sql","tags":["left","join","sql"],"date":"2025-08-07T02:06:02.233923647Z","updated":"2025-08-07T02:06:10.263878544Z"}
{"index":74,"description":"RIGHT JOIN SQL","language":"sql","code":"-- Ejemplo de RIGHT JOIN\n-- Esta consulta selecciona todos los registros de la tabla de la derecha (right_table)\n-- e intenta encontrar coincidencias en la tabla de la izquierda (left_table) usando el campo \"id\".\n-- Si no hay coincidencia en left_table, los valores de sus columnas aparecerán como NULL.\nSELECT *\nFROM left_table\nRIGHT JOIN right_table\n ON left_table.id = right_table.id;\n-- Resultado: Todas las filas de right_table aparecen.\n-- Si left_table no tiene coincidencia para algún \"id\" de right_table, las columnas de left_table muestran NULL.","extension":".sql","tags":["rigth","join","sql"],"date":"2025-08-07T00:00:00Z","updated":"2025-08-07T02:07:26.772660507Z"}
{"index":75,"description":"FULL JOIN SQL","language":"sql","code":"-- Este código selecciona países, primeros ministros y presidentes, mostrando todos los países posibles,\n-- incluso si solo existen en una de las dos tablas.\nSELECT\n p1.country, -- El nombre del país desde prime_ministers (p1).\n p1.prime_minister, -- El nombre del primer ministro desde prime_ministers (p1).\n p2.president -- El nombre del presidente desde presidents (p2).\nFROM\n prime_ministers AS p1 -- Utiliza la tabla prime_ministers y le da el alias \"p1\".\nFULL JOIN\n presidents AS p2 -- Utiliza la tabla presidents con el alias \"p2\".\nON\n p1.country = p2.country -- La unión se hace cuando el país es igual en ambas tablas.\nLIMIT 10; -- Limita el resultado a las primeras 10 filas.\n\n-- SE INCLUIRÁ CUALQUIER DATO NULO DE COINCIDA DE CUALQUIERA DE LAS DOS TABLAS.","extension":".sql","tags":["full","join","sql"],"date":"2025-08-07T04:08:04.196560698Z","updated":"2025-08-07T04:09:04.652982041Z"}
{"index":76,"description":"CROSS JOIN SQL","language":"sql","code":"-- Ejemplo de sintaxis de CROSS JOIN en SQL\n\nSELECT *\nFROM table1\nCROSS JOIN table2;\n\n-- Nota:\n-- No necesitas especificar ON ni USING, a diferencia de otros JOIN.\n-- Esto generará todas las combinaciones posibles entre las filas de table1 y table2.\n\n-- Un ejemplo de lo anterior:\n\n\n-- Ejemplo práctico de CROSS JOIN e\n\nSELECT pm.name AS prime_minister, p.name AS president\nFROM prime_ministers pm\nCROSS JOIN presidents p\nWHERE pm.continent = 'Asia'\n AND p.continent = 'South America';\n\n-- ¿Qué hace este ejemplo?\n-- Devuelve todas las combinaciones posibles de primeros ministros de Asia\n-- con presidentes de Sudamérica.\n-- Por ejemplo, si hay 4 primeros ministros y 2 presidentes,\n-- el resultado será una tabla con 8 filas (4 x 2 = 8 combinaciones).","extension":".sql","tags":["cross","join","sql","query"],"date":"2025-08-07T06:00:20.972759476Z","updated":"2025-08-07T06:02:35.573138252Z"}
{"index":77,"description":"Self JOIN Unir Tabla Consigo Misma","language":"sql","code":"-- ¿Qué es un SELF JOIN (autounión)?\n\n-- Un SELF JOIN es una técnica para unir una tabla consigo misma.\n-- Se usa, por ejemplo, para comparar o emparejar filas dentro de la misma tabla,\n-- como encontrar pares de países en el mismo continente.\n\n-- Ejemplo práctico:\n\nSELECT\n p1.country AS country1, -- Primer país del par (alias p1)\n p2.country AS country2, -- Segundo país del par (alias p2)\n p1.continent -- Continente de ambos países (es igual en ambos casos)\nFROM\n prime_ministers AS p1 -- Alias 'p1' para la primera instancia de la tabla\n INNER JOIN prime_ministers AS p2 -- Alias 'p2' para la segunda instancia\n ON p1.continent = p2.continent -- Unimos filas donde el continente es igual\n AND p1.country <> p2.country -- Excluimos pares donde los países sean el mismo\nLIMIT 10; -- Solo mostramos los primeros 10 resultados para evitar una tabla muy larga\n\n-- Resumen:\n\n-- 1. Usamos alias (p1, p2) porque la tabla aparece dos veces en la consulta.\n-- 2. El INNER JOIN compara cada fila de p1 con cada fila de p2.\n-- 3. Solo se muestran pares de países diferentes pero del mismo continente.\n-- 4. El LIMIT es opcional, solo para mostrar una muestra de los resultados.\n\n\n\n-------------------- AL FINAL RESULTA SIMILAR A CROSS JOIN -------------------------","extension":".sql","tags":["self","join","query","consigo","misma"],"date":"2025-08-07T00:00:00Z","updated":"2025-08-07T06:58:20.679673370Z"}
{"index":78,"description":"Slicing in Python with Lists","language":"python","code":"# Example list\nnumbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\n\n# Slicing from index 2 to 5\nslice1 = numbers[2:6]\nprint(slice1) # Output: [2, 3, 4, 5]\n\n# Slicing from the beginning to index 4\nslice2 = numbers[:5]\nprint(slice2) # Output: [0, 1, 2, 3, 4]\n\n# Slicing from index 5 to the end\nslice3 = numbers[5:]\nprint(slice3) # Output: [5, 6, 7, 8, 9]\n\n# Slicing with a step of 2\nslice4 = numbers[::2]\nprint(slice4) # Output: [0, 2, 4, 6, 8]\n\n# Slicing with a negative step (reversing the list)\nslice5 = numbers[::-1]\nprint(slice5) # Output: [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]\n\n# Slicing from index 1 to 7 with a step of 2\nslice6 = numbers[1:8:2]\nprint(slice6) # Output: [1, 3, 5, 7]\n\n# Printing the last element of the list\nlast_element = numbers[-1]\nprint(last_element) # Output: 9\n\n# Slicing the last 4 elements of the list\nlast_four_elements = numbers[-4:]\nprint(last_four_elements) # Output: [6, 7, 8, 9]","extension":".py","tags":["slicing","listas","elementos"],"date":"2025-08-07T00:00:00Z","updated":"2025-08-08T19:12:51.426909102Z"}
{"index":8,"description":"Ejecutar Snippet Python en Shell","language":"python","code":"python3 <<EOF\nimport os\nprint('Hola desde un snippet')\nEOF","extension":".py","tags":["ejecutar","snippet","shell"],"date":"2025-07-29T18:20:57.997762814Z","updated":"2025-07-29T18:22:46.331268515Z"}
{"index":9,"description":"Probar Variable de Entorno en Shell","language":"python","code":"python3 <<EOF\nimport os\n\napi_key = os.environ.get(\"CLICKUP_API_KEY\")\n\nif api_key:\n print(\"Tu clave es:\", api_key)\nelse:\n print(\"La variable CLICKUP_API_KEY no está definida.\")\nEOF","extension":".py","tags":["shell","variable","entorno"],"date":"2025-07-29T18:24:54.554453367Z","updated":"2025-07-29T18:26:30.703379224Z"}