{ "cells": [ { "cell_type": "markdown", "id": "ef3a7c61", "metadata": {}, "source": [ "# Análisis preliminar exploratorio" ] }, { "cell_type": "markdown", "id": "f493c890", "metadata": {}, "source": [ "## Índice\n", "\n", "1. [Objetivos del análisis](#objetivos-del-análisis)\n", "2. [Inspección inicial de los datos](#inspección-inicial-de-los-datos)\n", "3. [Limpieza y preparación](#limpieza-y-preparación)\n", "4. [Análisis univariante](#análisis-univariante)\n", "5. [Análisis de relaciones entre variables](#análisis-de-relaciones-entre-variables)\n", "6. [Visualización de los datos](#visualización-de-los-datos)\n", "7. [Conclusiones](#conclusiones)" ] }, { "cell_type": "markdown", "id": "e688d0e7", "metadata": {}, "source": [ "## 1. Objetivos del análisis" ] }, { "cell_type": "markdown", "id": "13fb63e3", "metadata": {}, "source": [ "Buscamos encontrar patrones que nos permitan decidir entre diferentes quejas o puntos de dolor que puedas ser susceptibles de resolverse con un software." ] }, { "cell_type": "markdown", "id": "78908327", "metadata": {}, "source": [ "## 2. Inspección inicial de los datos" ] }, { "cell_type": "code", "execution_count": 3, "id": "dcdef49a", "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import os" ] }, { "cell_type": "code", "execution_count": 6, "id": "7c0e5e49", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
idestadofecha_publicacionactorempresaactividadempleados_evidenciaprocesoepisodio_resumidofuente_publicacionfuente_empresa_o_tamanocriterio_observadonotasdimension_tipogrupo_similitud
0EXP-001incluido2026-08 aprox.Cristóbal Hernández MoraRecapol SAFabricación y transformación de carrocerías pa...35 en 2025 según eInforma; actividad industria...Operaciones/planificación de capacidadEl gerente describe cómo ausencias en taller p...https://es.linkedin.com/posts/cristobal-hernan...https://www.recapol.com/recapol-carrocerias-co...Primera persona y autoría empresarial verifica...Ficha archivada: textos_fuente/EXP-001.txt. Fe...Organización y personasSobrecarga, ausencias y dependencia de persona...
1EXP-002incluido2025 aprox.Alex Espel RiberaInprisa AutomFabricación/instalación industrial B2B20 empleados informados para 2025; por debajo ...Producción/compras/atención a clientesRelato directo sobre retrasos de proyectos, pl...https://es.linkedin.com/posts/alex-espel-riber...https://www.inprisa.com/ | https://www.einform...Autoría directiva y actividad industrial B2B v...Ficha de exclusión archivada: textos_fuente/EX...Planificación y operacionesUrgencias, coordinación y planificación diaria
2EXP-003incluido2026-10 aprox.Javier SantosCyklop StrapesaFabricación de sistemas de embalaje industrial...26 empleados en 2025 según eInforma; por debaj...Operaciones/plantaEl director general relata que las urgencias y...https://es.linkedin.com/posts/javiersantospalo...https://www.cyklop.es/ | https://www.einforma....Autoría directiva y actividad industrial B2B v...Ficha de exclusión archivada: textos_fuente/EX...Planificación y operacionesUrgencias, coordinación y planificación diaria
\n", "
" ], "text/plain": [ " id estado fecha_publicacion actor \\\n", "0 EXP-001 incluido 2026-08 aprox. Cristóbal Hernández Mora \n", "1 EXP-002 incluido 2025 aprox. Alex Espel Ribera \n", "2 EXP-003 incluido 2026-10 aprox. Javier Santos \n", "\n", " empresa actividad \\\n", "0 Recapol SA Fabricación y transformación de carrocerías pa... \n", "1 Inprisa Autom Fabricación/instalación industrial B2B \n", "2 Cyklop Strapesa Fabricación de sistemas de embalaje industrial... \n", "\n", " empleados_evidencia \\\n", "0 35 en 2025 según eInforma; actividad industria... \n", "1 20 empleados informados para 2025; por debajo ... \n", "2 26 empleados en 2025 según eInforma; por debaj... \n", "\n", " proceso \\\n", "0 Operaciones/planificación de capacidad \n", "1 Producción/compras/atención a clientes \n", "2 Operaciones/planta \n", "\n", " episodio_resumido \\\n", "0 El gerente describe cómo ausencias en taller p... \n", "1 Relato directo sobre retrasos de proyectos, pl... \n", "2 El director general relata que las urgencias y... \n", "\n", " fuente_publicacion \\\n", "0 https://es.linkedin.com/posts/cristobal-hernan... \n", "1 https://es.linkedin.com/posts/alex-espel-riber... \n", "2 https://es.linkedin.com/posts/javiersantospalo... \n", "\n", " fuente_empresa_o_tamano \\\n", "0 https://www.recapol.com/recapol-carrocerias-co... \n", "1 https://www.inprisa.com/ | https://www.einform... \n", "2 https://www.cyklop.es/ | https://www.einforma.... \n", "\n", " criterio_observado \\\n", "0 Primera persona y autoría empresarial verifica... \n", "1 Autoría directiva y actividad industrial B2B v... \n", "2 Autoría directiva y actividad industrial B2B v... \n", "\n", " notas \\\n", "0 Ficha archivada: textos_fuente/EXP-001.txt. Fe... \n", "1 Ficha de exclusión archivada: textos_fuente/EX... \n", "2 Ficha de exclusión archivada: textos_fuente/EX... \n", "\n", " dimension_tipo \\\n", "0 Organización y personas \n", "1 Planificación y operaciones \n", "2 Planificación y operaciones \n", "\n", " grupo_similitud \n", "0 Sobrecarga, ausencias y dependencia de persona... \n", "1 Urgencias, coordinación y planificación diaria \n", "2 Urgencias, coordinación y planificación diaria " ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "path = os.path.join(os.getcwd(), \n", " '07_muestra_exploratoria', \n", " 'casos_agrupados_por_dimensiones.csv'\n", " )\n", "\n", "df = pd.read_csv(path)\n", "df.head(3)" ] }, { "cell_type": "code", "execution_count": null, "id": "deb945c5", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 7, "id": "4672d52f", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "RangeIndex: 90 entries, 0 to 89\n", "Data columns (total 15 columns):\n", " # Column Non-Null Count Dtype\n", "--- ------ -------------- -----\n", " 0 id 90 non-null str \n", " 1 estado 90 non-null str \n", " 2 fecha_publicacion 90 non-null str \n", " 3 actor 90 non-null str \n", " 4 empresa 90 non-null str \n", " 5 actividad 90 non-null str \n", " 6 empleados_evidencia 90 non-null str \n", " 7 proceso 90 non-null str \n", " 8 episodio_resumido 90 non-null str \n", " 9 fuente_publicacion 90 non-null str \n", " 10 fuente_empresa_o_tamano 90 non-null str \n", " 11 criterio_observado 90 non-null str \n", " 12 notas 90 non-null str \n", " 13 dimension_tipo 90 non-null str \n", " 14 grupo_similitud 90 non-null str \n", "dtypes: str(15)\n", "memory usage: 10.7 KB\n" ] } ], "source": [ "df.info()" ] }, { "cell_type": "code", "execution_count": 8, "id": "8037d49c", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
idestadofecha_publicacionactorempresaactividadempleados_evidenciaprocesoepisodio_resumidofuente_publicacionfuente_empresa_o_tamanocriterio_observadonotasdimension_tipogrupo_similitud
count909090909090909090909090909090
unique9028588868689909089888990817
topEXP-001incluido2026-08 aprox.Sergio Ferrer FernándezStellantis España S.L. — planta de VigoFabricación de vehículos de motor; automoción90 empleados en 2026 segun eInforma/Empresite;...Operaciones/planificación de capacidadEl gerente describe cómo ausencias en taller p...https://es.linkedin.com/posts/rodrigo-moralejo...https://www.einforma.com/informacion-empresa/f...Autoría directiva y actividad industrial B2B v...Ficha archivada: textos_fuente/EXP-001.txt. Fe...Planificación y operacionesFlujo de trabajo, capacidad y pedidos
freq189223521122212113
\n", "
" ], "text/plain": [ " id estado fecha_publicacion actor \\\n", "count 90 90 90 90 \n", "unique 90 2 85 88 \n", "top EXP-001 incluido 2026-08 aprox. Sergio Ferrer Fernández \n", "freq 1 89 2 2 \n", "\n", " empresa \\\n", "count 90 \n", "unique 86 \n", "top Stellantis España S.L. — planta de Vigo \n", "freq 3 \n", "\n", " actividad \\\n", "count 90 \n", "unique 86 \n", "top Fabricación de vehículos de motor; automoción \n", "freq 5 \n", "\n", " empleados_evidencia \\\n", "count 90 \n", "unique 89 \n", "top 90 empleados en 2026 segun eInforma/Empresite;... \n", "freq 2 \n", "\n", " proceso \\\n", "count 90 \n", "unique 90 \n", "top Operaciones/planificación de capacidad \n", "freq 1 \n", "\n", " episodio_resumido \\\n", "count 90 \n", "unique 90 \n", "top El gerente describe cómo ausencias en taller p... \n", "freq 1 \n", "\n", " fuente_publicacion \\\n", "count 90 \n", "unique 89 \n", "top https://es.linkedin.com/posts/rodrigo-moralejo... \n", "freq 2 \n", "\n", " fuente_empresa_o_tamano \\\n", "count 90 \n", "unique 88 \n", "top https://www.einforma.com/informacion-empresa/f... \n", "freq 2 \n", "\n", " criterio_observado \\\n", "count 90 \n", "unique 89 \n", "top Autoría directiva y actividad industrial B2B v... \n", "freq 2 \n", "\n", " notas \\\n", "count 90 \n", "unique 90 \n", "top Ficha archivada: textos_fuente/EXP-001.txt. Fe... \n", "freq 1 \n", "\n", " dimension_tipo grupo_similitud \n", "count 90 90 \n", "unique 8 17 \n", "top Planificación y operaciones Flujo de trabajo, capacidad y pedidos \n", "freq 21 13 " ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.describe(include='all')" ] }, { "cell_type": "code", "execution_count": 9, "id": "2e94fc5a", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "id 0\n", "estado 0\n", "fecha_publicacion 0\n", "actor 0\n", "empresa 0\n", "actividad 0\n", "empleados_evidencia 0\n", "proceso 0\n", "episodio_resumido 0\n", "fuente_publicacion 0\n", "fuente_empresa_o_tamano 0\n", "criterio_observado 0\n", "notas 0\n", "dimension_tipo 0\n", "grupo_similitud 0\n", "dtype: int64" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.isna().sum()" ] }, { "cell_type": "code", "execution_count": 10, "id": "6497c801", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "np.int64(0)" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.duplicated().sum()" ] }, { "cell_type": "code", "execution_count": 11, "id": "2d648fe6", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "--- estado (2 únicos)---\n", "estado\n", "incluido 89\n", "excluido 1\n", "Name: count, dtype: int64\n", "\n", "--- actor (88 únicos)---\n", "actor\n", "Sergio Ferrer Fernández 2\n", "Sergio Ferrer Fernandez, CEO de Finestres Macrisal (publicacion personal) 2\n", "Cristóbal Hernández Mora 1\n", "Alex Espel Ribera 1\n", "Javier Santos 1\n", " ..\n", "Joan Sánchez García, vinculado a ANSA Montajes Metálicos, S.L. en LinkedIn 1\n", "Svelt Spain (cuenta corporativa; relato de proyecto conjunto) 1\n", "Antonio Monteiro, gerente de MPS Soluciones 3D 1\n", "Daniel F., director general/propietario (según perfil de LinkedIn) 1\n", "Manuel Marrama Esteve, vinculado a STALART en LinkedIn 1\n", "Name: count, Length: 88, dtype: int64\n", "\n", "--- actividad (86 únicos)---\n", "actividad\n", "Fabricación de vehículos de motor; automoción 5\n", "Fabricación y transformación de carrocerías para vehículos industriales; B2B 1\n", "Fabricación/instalación industrial B2B 1\n", "Fabricación de sistemas de embalaje industrial B2B 1\n", "Fabricación de ventanas y cerramientos aluminio/PVC para instaladores y otros clientes profesionales; Cataluña, España 1\n", " ..\n", "Fabricación y montaje de estructuras metálicas industriales; B2B 1\n", "Fabricación de soluciones de acceso y equipamiento especial; suministro industrial B2B 1\n", "Servicios de escaneado 3D, ingeniería inversa y fabricación aditiva para industria B2B 1\n", "Fabricación y montaje de estructuras metálicas, calderería y bienes de equipo; B2B industrial 1\n", "Diseño, fabricación y suministro de estructuras Steel Frame; B2B 1\n", "Name: count, Length: 86, dtype: int64\n", "\n", "--- dimension_tipo (8 únicos)---\n", "dimension_tipo\n", "Planificación y operaciones 21\n", "Continuidad y recuperación 18\n", "Organización y personas 12\n", "Demanda y estructura industrial 11\n", "Equipos, instalaciones y seguridad 10\n", "Sistemas y digitalización 7\n", "Suministro y dependencias externas 6\n", "Comercial y proyectos 5\n", "Name: count, dtype: int64\n", "\n", "--- grupo_similitud (17 únicos)---\n", "grupo_similitud\n", "Flujo de trabajo, capacidad y pedidos 13\n", "Ajuste, cierre o traslado de capacidad/planta 11\n", "DANA: daños, interrupción y recuperación de planta/servicio 9\n", "Fiabilidad, averías, mantenimiento y seguridad industrial 9\n", "Incendio: parada, traslado y recuperación productiva 7\n", "Adopción, integración y calidad de sistemas de información 6\n", "Contratación, disponibilidad y formación de perfiles 6\n", "Condiciones comerciales, coordinación de cliente y proyecto 5\n", "Falta de componentes, servicios o recursos esenciales 5\n", "Sobrecarga, ausencias y dependencia de personas clave 4\n", "Urgencias, coordinación y planificación diaria 4\n", "Control de producción, inventario y visibilidad operativa 4\n", "Delegación, estructura y orientación organizativa 2\n", "Interrupción técnica o retraso de puesta en marcha 2\n", "Obsolescencia de equipos de proceso 1\n", "Captura manual y transcripción de pedidos 1\n", "Planificación de demanda, suministro y compras 1\n", "Name: count, dtype: int64\n", "\n", "--- fuente_publicacion (89 únicos)---\n", "fuente_publicacion\n", "https://es.linkedin.com/posts/rodrigo-moralejo-248016123_porque-detr%C3%A1s-de-cada-f%C3%A1brica-hay-muchas-activity-7399358414637748224-eiik 2\n", "https://es.linkedin.com/posts/cristobal-hernandez-mora-622989186_pymes-empresarios-activity-7492840134887964672-uLCL 1\n", "https://es.linkedin.com/posts/alex-espel-ribera_crear-una-empresa-es-como-hacer-una-lasa%C3%B1a-activity-7302961121433444352-lJTL 1\n", "https://es.linkedin.com/posts/javiersantospalomo_un-director-general-deber%C3%ADa-bajar-m%C3%A1s-a-planta-activity-7508405307010908160-5LXW 1\n", "https://es.linkedin.com/posts/sergio-ferrer-fern%C3%A1ndez-50b52111a_hace-poco-rechazamos-un-pedido-grande-de-activity-7507719567067066369-cvx8 1\n", " ..\n", "https://es.linkedin.com/posts/joan-sg_te-lo-digo-claro-nadie-quiere-recibir-la-activity-7386431546712428545-bUZg 1\n", "https://es.linkedin.com/pulse/el-proyecto-la-confianza-nos-eligen-svelt-spain-vhcbe 1\n", "https://es.linkedin.com/posts/antonio-monteiro-99798414_fabricacion-ingenieria-industria-activity-7483067848039436289-LBrD 1\n", "https://es.linkedin.com/pulse/por-qu%C3%A9-algunas-empresas-industriales-hemos-dejado-de-daniel-plkle 1\n", "https://es.linkedin.com/posts/manuel-marrama-esteve-b2903230_se-nos-ha-ca%C3%ADdo-un-proyecto-el-dise%C3%B1o-cerrado-activity-7501169980604874754-dv8D 1\n", "Name: count, Length: 89, dtype: int64\n" ] } ], "source": [ "def col_distribution(df):\n", " col_array = [\"estado\", \"actor\", \"actividad\", \"dimension_tipo\", \"grupo_similitud\", \"fuente_publicacion\"]\n", "\n", " for col in col_array:\n", " print(f\"\\n--- {col} ({df[col].nunique()} únicos)---\")\n", " print(df[col].value_counts())\n", "\n", "col_distribution(df)" ] }, { "cell_type": "code", "execution_count": 12, "id": "1fcebc57", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Rango Temporal 2024-11-03 00:00:00 a 2026-10-22 00:00:00\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "C:\\Users\\Toni Ramos\\AppData\\Local\\Temp\\ipykernel_6872\\4052223768.py:1: UserWarning: Could not infer format, so each element will be parsed individually, falling back to `dateutil`. To ensure parsing is consistent and as-expected, please specify a format.\n", " df[\"fecha_publicacion\"] = pd.to_datetime(df[\"fecha_publicacion\"], errors='coerce')\n" ] } ], "source": [ "df[\"fecha_publicacion\"] = pd.to_datetime(df[\"fecha_publicacion\"], errors='coerce')\n", "print(\"Rango Temporal\", df[\"fecha_publicacion\"].min(), \"a\", df[\"fecha_publicacion\"].max())" ] }, { "cell_type": "code", "execution_count": 13, "id": "ff7a928e", "metadata": {}, "outputs": [], "source": [ "df[\"texto_normalizado\"] = df[\"episodio_resumido\"].str.lower()\n", "df[\"longitud_texto\"] = df[\"texto_normalizado\"].str.len()" ] }, { "cell_type": "code", "execution_count": 14, "id": "3a6c453b", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "89" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = df[df[\"estado\"] == \"incluido\"].copy()\n", "len(df)" ] }, { "cell_type": "code", "execution_count": 21, "id": "0550010e", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "dimension_tipo\n", "Planificación y operaciones 21\n", "Continuidad y recuperación 18\n", "Organización y personas 11\n", "Demanda y estructura industrial 11\n", "Equipos, instalaciones y seguridad 10\n", "Sistemas y digitalización 7\n", "Suministro y dependencias externas 6\n", "Comercial y proyectos 5\n", "Name: count, dtype: int64" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df[\"dimension_tipo\"].value_counts()" ] }, { "cell_type": "code", "execution_count": 22, "id": "19d02aff", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "grupo_similitud\n", "Flujo de trabajo, capacidad y pedidos 13\n", "Ajuste, cierre o traslado de capacidad/planta 11\n", "DANA: daños, interrupción y recuperación de planta/servicio 9\n", "Fiabilidad, averías, mantenimiento y seguridad industrial 9\n", "Incendio: parada, traslado y recuperación productiva 7\n", "Adopción, integración y calidad de sistemas de información 6\n", "Condiciones comerciales, coordinación de cliente y proyecto 5\n", "Contratación, disponibilidad y formación de perfiles 5\n", "Falta de componentes, servicios o recursos esenciales 5\n", "Sobrecarga, ausencias y dependencia de personas clave 4\n", "Urgencias, coordinación y planificación diaria 4\n", "Control de producción, inventario y visibilidad operativa 4\n", "Delegación, estructura y orientación organizativa 2\n", "Interrupción técnica o retraso de puesta en marcha 2\n", "Obsolescencia de equipos de proceso 1\n", "Captura manual y transcripción de pedidos 1\n", "Planificación de demanda, suministro y compras 1\n", "Name: count, dtype: int64" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df[\"grupo_similitud\"].value_counts()" ] }, { "cell_type": "code", "execution_count": 23, "id": "038919d5", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "fecha_publicacion\n", "2024-11 1\n", "2024-12 1\n", "2025-01 2\n", "2025-03 1\n", "2025-04 3\n", "2025-05 1\n", "2025-06 1\n", "2025-07 2\n", "2025-08 1\n", "2025-09 1\n", "2025-10 1\n", "2025-11 3\n", "2025-12 2\n", "2026-01 3\n", "2026-02 5\n", "2026-03 1\n", "2026-04 2\n", "2026-05 4\n", "2026-06 4\n", "2026-07 2\n", "2026-08 1\n", "2026-09 3\n", "2026-10 6\n", "Freq: M, Name: count, dtype: int64" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df[\"fecha_publicacion\"].dt.to_period(\"M\").value_counts().sort_index()" ] }, { "cell_type": "code", "execution_count": 25, "id": "f70379f0", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "count 89.000000\n", "mean 190.157303\n", "std 81.263446\n", "min 6.000000\n", "25% 156.000000\n", "50% 190.000000\n", "75% 257.000000\n", "max 341.000000\n", "Name: longitud_texto, dtype: float64" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df[\"longitud_texto\"].describe()" ] }, { "cell_type": "code", "execution_count": 26, "id": "9e26a65c", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "np.int64(52)" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df[\"actividad\"].str.contains(\"B2B\", case=False, na=False).sum()" ] }, { "cell_type": "code", "execution_count": 27, "id": "0dcfba56", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
idepisodio_resumidogrupo_similitud
31EXP-032control de calidad e información financieraAdopción, integración y calidad de sistemas de...
32EXP-033pedidos e incidenciasControl de producción, inventario y visibilida...
35EXP-036Preimpresión y fabricación de planchasObsolescencia de equipos de proceso
37EXP-038Recepción y transcripción de pedidos B2BCaptura manual y transcripción de pedidos
41EXP-042DiseñoPlanificación de demanda, suministro y compras
47EXP-048Fiabilidad productiva y mantenimiento preventivoFiabilidad, averías, mantenimiento y seguridad...
50EXP-051Seguridad de instalaciones de la nave de montajeFiabilidad, averías, mantenimiento y seguridad...
\n", "
" ], "text/plain": [ " id episodio_resumido \\\n", "31 EXP-032 control de calidad e información financiera \n", "32 EXP-033 pedidos e incidencias \n", "35 EXP-036 Preimpresión y fabricación de planchas \n", "37 EXP-038 Recepción y transcripción de pedidos B2B \n", "41 EXP-042 Diseño \n", "47 EXP-048 Fiabilidad productiva y mantenimiento preventivo \n", "50 EXP-051 Seguridad de instalaciones de la nave de montaje \n", "\n", " grupo_similitud \n", "31 Adopción, integración y calidad de sistemas de... \n", "32 Control de producción, inventario y visibilida... \n", "35 Obsolescencia de equipos de proceso \n", "37 Captura manual y transcripción de pedidos \n", "41 Planificación de demanda, suministro y compras \n", "47 Fiabilidad, averías, mantenimiento y seguridad... \n", "50 Fiabilidad, averías, mantenimiento y seguridad... " ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df[df[\"longitud_texto\"] < 50][[\"id\", \"episodio_resumido\", \"grupo_similitud\"]]" ] }, { "cell_type": "code", "execution_count": 28, "id": "4c9a8514", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
fecha_publicacion202420252026
grupo_similitud
Adopción, integración y calidad de sistemas de información020
Ajuste, cierre o traslado de capacidad/planta029
Condiciones comerciales, coordinación de cliente y proyecto001
Contratación, disponibilidad y formación de perfiles012
Control de producción, inventario y visibilidad operativa020
DANA: daños, interrupción y recuperación de planta/servicio110
Delegación, estructura y orientación organizativa010
Falta de componentes, servicios o recursos esenciales014
Fiabilidad, averías, mantenimiento y seguridad industrial052
Flujo de trabajo, capacidad y pedidos1010
Interrupción técnica o retraso de puesta en marcha011
Obsolescencia de equipos de proceso001
Planificación de demanda, suministro y compras010
Sobrecarga, ausencias y dependencia de personas clave010
Urgencias, coordinación y planificación diaria001
\n", "
" ], "text/plain": [ "fecha_publicacion 2024 2025 2026\n", "grupo_similitud \n", "Adopción, integración y calidad de sistemas de ... 0 2 0\n", "Ajuste, cierre o traslado de capacidad/planta 0 2 9\n", "Condiciones comerciales, coordinación de client... 0 0 1\n", "Contratación, disponibilidad y formación de per... 0 1 2\n", "Control de producción, inventario y visibilidad... 0 2 0\n", "DANA: daños, interrupción y recuperación de pla... 1 1 0\n", "Delegación, estructura y orientación organizativa 0 1 0\n", "Falta de componentes, servicios o recursos esen... 0 1 4\n", "Fiabilidad, averías, mantenimiento y seguridad ... 0 5 2\n", "Flujo de trabajo, capacidad y pedidos 1 0 10\n", "Interrupción técnica o retraso de puesta en marcha 0 1 1\n", "Obsolescencia de equipos de proceso 0 0 1\n", "Planificación de demanda, suministro y compras 0 1 0\n", "Sobrecarga, ausencias y dependencia de personas... 0 1 0\n", "Urgencias, coordinación y planificación diaria 0 0 1" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.crosstab(df[\"grupo_similitud\"], df[\"fecha_publicacion\"].dt.to_period(\"Y\"))" ] }, { "cell_type": "code", "execution_count": 29, "id": "d51bbe01", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
dimension_tipoComercial y proyectosContinuidad y recuperaciónDemanda y estructura industrialEquipos, instalaciones y seguridadOrganización y personasPlanificación y operacionesSistemas y digitalizaciónSuministro y dependencias externas
grupo_similitud
Adopción, integración y calidad de sistemas de información00000060
Ajuste, cierre o traslado de capacidad/planta001100000
Captura manual y transcripción de pedidos00000010
Condiciones comerciales, coordinación de cliente y proyecto50000000
Contratación, disponibilidad y formación de perfiles00005000
Control de producción, inventario y visibilidad operativa00000400
DANA: daños, interrupción y recuperación de planta/servicio09000000
Delegación, estructura y orientación organizativa00002000
Falta de componentes, servicios o recursos esenciales00000005
Fiabilidad, averías, mantenimiento y seguridad industrial00090000
Flujo de trabajo, capacidad y pedidos000001300
Incendio: parada, traslado y recuperación productiva07000000
Interrupción técnica o retraso de puesta en marcha02000000
Obsolescencia de equipos de proceso00010000
Planificación de demanda, suministro y compras00000001
Sobrecarga, ausencias y dependencia de personas clave00004000
Urgencias, coordinación y planificación diaria00000400
\n", "
" ], "text/plain": [ "dimension_tipo Comercial y proyectos \\\n", "grupo_similitud \n", "Adopción, integración y calidad de sistemas de ... 0 \n", "Ajuste, cierre o traslado de capacidad/planta 0 \n", "Captura manual y transcripción de pedidos 0 \n", "Condiciones comerciales, coordinación de client... 5 \n", "Contratación, disponibilidad y formación de per... 0 \n", "Control de producción, inventario y visibilidad... 0 \n", "DANA: daños, interrupción y recuperación de pla... 0 \n", "Delegación, estructura y orientación organizativa 0 \n", "Falta de componentes, servicios o recursos esen... 0 \n", "Fiabilidad, averías, mantenimiento y seguridad ... 0 \n", "Flujo de trabajo, capacidad y pedidos 0 \n", "Incendio: parada, traslado y recuperación produ... 0 \n", "Interrupción técnica o retraso de puesta en marcha 0 \n", "Obsolescencia de equipos de proceso 0 \n", "Planificación de demanda, suministro y compras 0 \n", "Sobrecarga, ausencias y dependencia de personas... 0 \n", "Urgencias, coordinación y planificación diaria 0 \n", "\n", "dimension_tipo Continuidad y recuperación \\\n", "grupo_similitud \n", "Adopción, integración y calidad de sistemas de ... 0 \n", "Ajuste, cierre o traslado de capacidad/planta 0 \n", "Captura manual y transcripción de pedidos 0 \n", "Condiciones comerciales, coordinación de client... 0 \n", "Contratación, disponibilidad y formación de per... 0 \n", "Control de producción, inventario y visibilidad... 0 \n", "DANA: daños, interrupción y recuperación de pla... 9 \n", "Delegación, estructura y orientación organizativa 0 \n", "Falta de componentes, servicios o recursos esen... 0 \n", "Fiabilidad, averías, mantenimiento y seguridad ... 0 \n", "Flujo de trabajo, capacidad y pedidos 0 \n", "Incendio: parada, traslado y recuperación produ... 7 \n", "Interrupción técnica o retraso de puesta en marcha 2 \n", "Obsolescencia de equipos de proceso 0 \n", "Planificación de demanda, suministro y compras 0 \n", "Sobrecarga, ausencias y dependencia de personas... 0 \n", "Urgencias, coordinación y planificación diaria 0 \n", "\n", "dimension_tipo Demanda y estructura industrial \\\n", "grupo_similitud \n", "Adopción, integración y calidad de sistemas de ... 0 \n", "Ajuste, cierre o traslado de capacidad/planta 11 \n", "Captura manual y transcripción de pedidos 0 \n", "Condiciones comerciales, coordinación de client... 0 \n", "Contratación, disponibilidad y formación de per... 0 \n", "Control de producción, inventario y visibilidad... 0 \n", "DANA: daños, interrupción y recuperación de pla... 0 \n", "Delegación, estructura y orientación organizativa 0 \n", "Falta de componentes, servicios o recursos esen... 0 \n", "Fiabilidad, averías, mantenimiento y seguridad ... 0 \n", "Flujo de trabajo, capacidad y pedidos 0 \n", "Incendio: parada, traslado y recuperación produ... 0 \n", "Interrupción técnica o retraso de puesta en marcha 0 \n", "Obsolescencia de equipos de proceso 0 \n", "Planificación de demanda, suministro y compras 0 \n", "Sobrecarga, ausencias y dependencia de personas... 0 \n", "Urgencias, coordinación y planificación diaria 0 \n", "\n", "dimension_tipo Equipos, instalaciones y seguridad \\\n", "grupo_similitud \n", "Adopción, integración y calidad de sistemas de ... 0 \n", "Ajuste, cierre o traslado de capacidad/planta 0 \n", "Captura manual y transcripción de pedidos 0 \n", "Condiciones comerciales, coordinación de client... 0 \n", "Contratación, disponibilidad y formación de per... 0 \n", "Control de producción, inventario y visibilidad... 0 \n", "DANA: daños, interrupción y recuperación de pla... 0 \n", "Delegación, estructura y orientación organizativa 0 \n", "Falta de componentes, servicios o recursos esen... 0 \n", "Fiabilidad, averías, mantenimiento y seguridad ... 9 \n", "Flujo de trabajo, capacidad y pedidos 0 \n", "Incendio: parada, traslado y recuperación produ... 0 \n", "Interrupción técnica o retraso de puesta en marcha 0 \n", "Obsolescencia de equipos de proceso 1 \n", "Planificación de demanda, suministro y compras 0 \n", "Sobrecarga, ausencias y dependencia de personas... 0 \n", "Urgencias, coordinación y planificación diaria 0 \n", "\n", "dimension_tipo Organización y personas \\\n", "grupo_similitud \n", "Adopción, integración y calidad de sistemas de ... 0 \n", "Ajuste, cierre o traslado de capacidad/planta 0 \n", "Captura manual y transcripción de pedidos 0 \n", "Condiciones comerciales, coordinación de client... 0 \n", "Contratación, disponibilidad y formación de per... 5 \n", "Control de producción, inventario y visibilidad... 0 \n", "DANA: daños, interrupción y recuperación de pla... 0 \n", "Delegación, estructura y orientación organizativa 2 \n", "Falta de componentes, servicios o recursos esen... 0 \n", "Fiabilidad, averías, mantenimiento y seguridad ... 0 \n", "Flujo de trabajo, capacidad y pedidos 0 \n", "Incendio: parada, traslado y recuperación produ... 0 \n", "Interrupción técnica o retraso de puesta en marcha 0 \n", "Obsolescencia de equipos de proceso 0 \n", "Planificación de demanda, suministro y compras 0 \n", "Sobrecarga, ausencias y dependencia de personas... 4 \n", "Urgencias, coordinación y planificación diaria 0 \n", "\n", "dimension_tipo Planificación y operaciones \\\n", "grupo_similitud \n", "Adopción, integración y calidad de sistemas de ... 0 \n", "Ajuste, cierre o traslado de capacidad/planta 0 \n", "Captura manual y transcripción de pedidos 0 \n", "Condiciones comerciales, coordinación de client... 0 \n", "Contratación, disponibilidad y formación de per... 0 \n", "Control de producción, inventario y visibilidad... 4 \n", "DANA: daños, interrupción y recuperación de pla... 0 \n", "Delegación, estructura y orientación organizativa 0 \n", "Falta de componentes, servicios o recursos esen... 0 \n", "Fiabilidad, averías, mantenimiento y seguridad ... 0 \n", "Flujo de trabajo, capacidad y pedidos 13 \n", "Incendio: parada, traslado y recuperación produ... 0 \n", "Interrupción técnica o retraso de puesta en marcha 0 \n", "Obsolescencia de equipos de proceso 0 \n", "Planificación de demanda, suministro y compras 0 \n", "Sobrecarga, ausencias y dependencia de personas... 0 \n", "Urgencias, coordinación y planificación diaria 4 \n", "\n", "dimension_tipo Sistemas y digitalización \\\n", "grupo_similitud \n", "Adopción, integración y calidad de sistemas de ... 6 \n", "Ajuste, cierre o traslado de capacidad/planta 0 \n", "Captura manual y transcripción de pedidos 1 \n", "Condiciones comerciales, coordinación de client... 0 \n", "Contratación, disponibilidad y formación de per... 0 \n", "Control de producción, inventario y visibilidad... 0 \n", "DANA: daños, interrupción y recuperación de pla... 0 \n", "Delegación, estructura y orientación organizativa 0 \n", "Falta de componentes, servicios o recursos esen... 0 \n", "Fiabilidad, averías, mantenimiento y seguridad ... 0 \n", "Flujo de trabajo, capacidad y pedidos 0 \n", "Incendio: parada, traslado y recuperación produ... 0 \n", "Interrupción técnica o retraso de puesta en marcha 0 \n", "Obsolescencia de equipos de proceso 0 \n", "Planificación de demanda, suministro y compras 0 \n", "Sobrecarga, ausencias y dependencia de personas... 0 \n", "Urgencias, coordinación y planificación diaria 0 \n", "\n", "dimension_tipo Suministro y dependencias externas \n", "grupo_similitud \n", "Adopción, integración y calidad de sistemas de ... 0 \n", "Ajuste, cierre o traslado de capacidad/planta 0 \n", "Captura manual y transcripción de pedidos 0 \n", "Condiciones comerciales, coordinación de client... 0 \n", "Contratación, disponibilidad y formación de per... 0 \n", "Control de producción, inventario y visibilidad... 0 \n", "DANA: daños, interrupción y recuperación de pla... 0 \n", "Delegación, estructura y orientación organizativa 0 \n", "Falta de componentes, servicios o recursos esen... 5 \n", "Fiabilidad, averías, mantenimiento y seguridad ... 0 \n", "Flujo de trabajo, capacidad y pedidos 0 \n", "Incendio: parada, traslado y recuperación produ... 0 \n", "Interrupción técnica o retraso de puesta en marcha 0 \n", "Obsolescencia de equipos de proceso 0 \n", "Planificación de demanda, suministro y compras 1 \n", "Sobrecarga, ausencias y dependencia de personas... 0 \n", "Urgencias, coordinación y planificación diaria 0 " ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.crosstab(df[\"grupo_similitud\"], df[\"dimension_tipo\"])" ] }, { "cell_type": "code", "execution_count": 32, "id": "e9f0dd9a", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " excel: 0\n", " whatsapp: 0\n", " manual: 3\n", " papel: 1\n", " a mano: 0\n", " hoja de calculo: 0\n", " software: 0\n", " erp: 2\n", " app: 0\n", " llamada: 0\n", " email: 0\n" ] } ], "source": [ "communication_keywords = [\"excel\", \"whatsapp\", \"manual\", \"papel\", \"a mano\", \"hoja de calculo\",\n", " \"software\", \"erp\", \"app\", \"llamada\", \"email\"]\n", "for kw in communication_keywords:\n", " print(f\"{kw:>16}: {df['texto_normalizado'].str.contains(kw, na=False).sum()}\")" ] }, { "cell_type": "code", "execution_count": 33, "id": "3312e42c", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "np.int64(38)" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df[\"fecha_publicacion\"].isna().sum()" ] }, { "cell_type": "code", "execution_count": 35, "id": "8b74536b", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
idfecha_publicacion
0EXP-0012026-08 aprox.
1EXP-0022025 aprox.
2EXP-0032026-10 aprox.
3EXP-0042026-09 aprox.
4EXP-0062026-08 aprox. (post retrospectivo sobre event...
5EXP-0072026-10-15 aprox.
6EXP-0092026-10 aprox.
7EXP-0112024-10/11 aprox.
8EXP-0122024-11 aprox.
9EXP-0142024-10-30 aprox.
\n", "
" ], "text/plain": [ " id fecha_publicacion\n", "0 EXP-001 2026-08 aprox.\n", "1 EXP-002 2025 aprox.\n", "2 EXP-003 2026-10 aprox.\n", "3 EXP-004 2026-09 aprox.\n", "4 EXP-006 2026-08 aprox. (post retrospectivo sobre event...\n", "5 EXP-007 2026-10-15 aprox.\n", "6 EXP-009 2026-10 aprox.\n", "7 EXP-011 2024-10/11 aprox.\n", "8 EXP-012 2024-11 aprox.\n", "9 EXP-014 2024-10-30 aprox." ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "raw = pd.read_csv(path)\n", "pd.merge(df.loc[df[\"fecha_publicacion\"].isna(), [\"id\"]],\n", " raw[[\"id\", \"fecha_publicacion\"]], on=\"id\").head(10)" ] }, { "cell_type": "code", "execution_count": null, "id": "77dda386", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.14.4" } }, "nbformat": 4, "nbformat_minor": 5 }