diff --git a/.gitignore b/.gitignore
index ed97b14..ba16d2d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -202,3 +202,4 @@ pyvenv.cfg
.venv
pip-selfcheck.json
+# Opencode Auxiliary Files
\ No newline at end of file
diff --git a/.serena/.gitignore b/.serena/.gitignore
new file mode 100644
index 0000000..2e510af
--- /dev/null
+++ b/.serena/.gitignore
@@ -0,0 +1,2 @@
+/cache
+/project.local.yml
diff --git a/.serena/project.yml b/.serena/project.yml
new file mode 100644
index 0000000..2c1c587
--- /dev/null
+++ b/.serena/project.yml
@@ -0,0 +1,132 @@
+# the name by which the project can be referenced within Serena
+project_name: "fuentes_dolores_digitalizacion_2026"
+
+
+# list of languages for which language servers are started; choose from:
+# al angular ansible bash clojure
+# cpp cpp_ccls crystal csharp csharp_omnisharp
+# dart elixir elm erlang fortran
+# fsharp go groovy haskell haxe
+# hlsl html java json julia
+# kotlin lean4 lua luau markdown
+# matlab msl nix ocaml pascal
+# perl php php_phpactor powershell python
+# python_jedi python_ty r rego ruby
+# ruby_solargraph rust scala scss solidity
+# svelte swift systemverilog terraform toml
+# typescript typescript_vts vue yaml zig
+# (This list may be outdated. For the current list, see values of Language enum here:
+# https://github.com/oraios/serena/blob/main/src/solidlsp/ls_config.py
+# For some languages, there are alternative language servers, e.g. csharp_omnisharp, ruby_solargraph.)
+# Note:
+# - For C, use cpp
+# - For JavaScript, use typescript
+# - For Angular projects, use angular (subsumes typescript+html; requires `npm install` in the project root)
+# - For Svelte projects, use svelte (subsumes typescript/javascript for .svelte projects; requires npm)
+# - For SCSS / Sass / plain CSS, use scss (some-sass-language-server handles all three)
+# - For Free Pascal/Lazarus, use pascal
+# Special requirements:
+# Some languages require additional setup/installations.
+# See here for details: https://oraios.github.io/serena/01-about/020_programming-languages.html#language-servers
+# When using multiple languages, the first language server that supports a given file will be used for that file.
+# The first language is the default language and the respective language server will be used as a fallback.
+# Note that when using the JetBrains backend, language servers are not used and this list is correspondingly ignored.
+languages: []
+
+# the encoding used by text files in the project
+# For a list of possible encodings, see https://docs.python.org/3.11/library/codecs.html#standard-encodings
+encoding: "utf-8"
+
+# line ending convention to use when writing source files.
+# Possible values: unset (use global setting), "lf", "crlf", or "native" (platform default)
+# This does not affect Serena's own files (e.g. memories and configuration files), which always use native line endings.
+line_ending:
+
+# The language backend to use for this project.
+# If not set, the global setting from serena_config.yml is used.
+# Valid values: LSP, JetBrains
+# Note: the backend is fixed at startup. If a project with a different backend
+# is activated post-init, an error will be returned.
+language_backend:
+
+# whether to use project's .gitignore files to ignore files
+ignore_all_files_in_gitignore: true
+
+# advanced configuration option allowing to configure language server-specific options.
+# Maps the language key to the options.
+# Have a look at the docstring of the constructors of the LS implementations within solidlsp (e.g., for C# or PHP) to see which options are available.
+# No documentation on options means no options are available.
+ls_specific_settings: {}
+
+# list of additional workspace folder paths for cross-package reference support (e.g. in monorepos).
+# Paths can be absolute or relative to the project root.
+# Each folder is registered as an LSP workspace folder, enabling language servers to discover
+# symbols and references across package boundaries.
+# Currently supported for: TypeScript.
+# Example:
+# additional_workspace_folders:
+# - ../sibling-package
+# - ../shared-lib
+additional_workspace_folders: []
+
+# list of additional paths to ignore in this project.
+# Same syntax as gitignore, so you can use * and **.
+# Note: global ignored_paths from serena_config.yml are also applied additively.
+ignored_paths: []
+
+# whether the project is in read-only mode
+# If set to true, all editing tools will be disabled and attempts to use them will result in an error
+# Added on 2025-04-18
+read_only: false
+
+# list of tool names to exclude.
+# This extends the existing exclusions (e.g. from the global configuration)
+# Find the list of tools here: https://oraios.github.io/serena/01-about/035_tools.html
+excluded_tools: []
+
+# list of tools to include that would otherwise be disabled (particularly optional tools that are disabled by default).
+# This extends the existing inclusions (e.g. from the global configuration).
+# Find the list of tools here: https://oraios.github.io/serena/01-about/035_tools.html
+included_optional_tools: []
+
+# fixed set of tools to use as the base tool set (if non-empty), replacing Serena's default set of tools.
+# This cannot be combined with non-empty excluded_tools or included_optional_tools.
+# Find the list of tools here: https://oraios.github.io/serena/01-about/035_tools.html
+fixed_tools: []
+
+# list of mode names that are to be activated by default, overriding the setting in the global configuration.
+# The full set of modes to be activated is base_modes (from global config) + default_modes + added_modes.
+# If the setting is undefined/empty, the default_modes from the global configuration (serena_config.yml) apply.
+# Otherwise, this overrides the setting from the global configuration (serena_config.yml).
+# Therefore, you can set this to [] if you do not want the default modes defined in the global config to apply
+# for this project.
+# This setting can, in turn, be overridden by CLI parameters (--mode).
+# See https://oraios.github.io/serena/02-usage/050_configuration.html#modes
+default_modes:
+
+# list of mode names to be activated additionally for this project, e.g. ["query-projects"]
+# The full set of modes to be activated is base_modes (from global config) + default_modes + added_modes.
+# See https://oraios.github.io/serena/02-usage/050_configuration.html#modes
+added_modes:
+
+# initial prompt for the project. It will always be given to the LLM upon activating the project
+# (contrary to the memories, which are loaded on demand).
+initial_prompt: ""
+
+# time budget (seconds) per tool call for the retrieval of additional symbol information
+# such as docstrings or parameter information.
+# This overrides the corresponding setting in the global configuration; see the documentation there.
+# If null or missing, use the setting from the global configuration.
+symbol_info_budget:
+
+# list of regex patterns which, when matched, mark a memory entry as read‑only.
+# Extends the list from the global configuration, merging the two lists.
+read_only_memory_patterns: []
+
+# list of regex patterns for memories to completely ignore.
+# Matching memories will not appear in list_memories or activate_project output
+# and cannot be accessed via read_memory or write_memory.
+# To access ignored memory files, use the read_file tool on the raw file path.
+# Extends the list from the global configuration, merging the two lists.
+# Example: ["_archive/.*", "_episodes/.*"]
+ignored_memory_patterns: []
diff --git a/preliminar_analysis_exploration.ipynb b/preliminar_analysis_exploration.ipynb
index a729541..e886805 100644
--- a/preliminar_analysis_exploration.ipynb
+++ b/preliminar_analysis_exploration.ipynb
@@ -36,6 +36,1556 @@
"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",
+ " id | \n",
+ " estado | \n",
+ " fecha_publicacion | \n",
+ " actor | \n",
+ " empresa | \n",
+ " actividad | \n",
+ " empleados_evidencia | \n",
+ " proceso | \n",
+ " episodio_resumido | \n",
+ " fuente_publicacion | \n",
+ " fuente_empresa_o_tamano | \n",
+ " criterio_observado | \n",
+ " notas | \n",
+ " dimension_tipo | \n",
+ " grupo_similitud | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " EXP-001 | \n",
+ " incluido | \n",
+ " 2026-08 aprox. | \n",
+ " Cristóbal Hernández Mora | \n",
+ " Recapol SA | \n",
+ " Fabricación y transformación de carrocerías pa... | \n",
+ " 35 en 2025 según eInforma; actividad industria... | \n",
+ " Operaciones/planificación de capacidad | \n",
+ " El gerente describe cómo ausencias en taller p... | \n",
+ " https://es.linkedin.com/posts/cristobal-hernan... | \n",
+ " https://www.recapol.com/recapol-carrocerias-co... | \n",
+ " Primera persona y autoría empresarial verifica... | \n",
+ " Ficha archivada: textos_fuente/EXP-001.txt. Fe... | \n",
+ " Organización y personas | \n",
+ " Sobrecarga, ausencias y dependencia de persona... | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " EXP-002 | \n",
+ " incluido | \n",
+ " 2025 aprox. | \n",
+ " Alex Espel Ribera | \n",
+ " Inprisa Autom | \n",
+ " Fabricación/instalación industrial B2B | \n",
+ " 20 empleados informados para 2025; por debajo ... | \n",
+ " Producción/compras/atención a clientes | \n",
+ " Relato directo sobre retrasos de proyectos, pl... | \n",
+ " https://es.linkedin.com/posts/alex-espel-riber... | \n",
+ " https://www.inprisa.com/ | https://www.einform... | \n",
+ " Autoría directiva y actividad industrial B2B v... | \n",
+ " Ficha de exclusión archivada: textos_fuente/EX... | \n",
+ " Planificación y operaciones | \n",
+ " Urgencias, coordinación y planificación diaria | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " EXP-003 | \n",
+ " incluido | \n",
+ " 2026-10 aprox. | \n",
+ " Javier Santos | \n",
+ " Cyklop Strapesa | \n",
+ " Fabricación de sistemas de embalaje industrial... | \n",
+ " 26 empleados en 2025 según eInforma; por debaj... | \n",
+ " Operaciones/planta | \n",
+ " El director general relata que las urgencias y... | \n",
+ " https://es.linkedin.com/posts/javiersantospalo... | \n",
+ " https://www.cyklop.es/ | https://www.einforma.... | \n",
+ " Autoría directiva y actividad industrial B2B v... | \n",
+ " Ficha de exclusión archivada: textos_fuente/EX... | \n",
+ " Planificación y operaciones | \n",
+ " Urgencias, coordinación y planificación diaria | \n",
+ "
\n",
+ " \n",
+ "
\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",
+ " id | \n",
+ " estado | \n",
+ " fecha_publicacion | \n",
+ " actor | \n",
+ " empresa | \n",
+ " actividad | \n",
+ " empleados_evidencia | \n",
+ " proceso | \n",
+ " episodio_resumido | \n",
+ " fuente_publicacion | \n",
+ " fuente_empresa_o_tamano | \n",
+ " criterio_observado | \n",
+ " notas | \n",
+ " dimension_tipo | \n",
+ " grupo_similitud | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | count | \n",
+ " 90 | \n",
+ " 90 | \n",
+ " 90 | \n",
+ " 90 | \n",
+ " 90 | \n",
+ " 90 | \n",
+ " 90 | \n",
+ " 90 | \n",
+ " 90 | \n",
+ " 90 | \n",
+ " 90 | \n",
+ " 90 | \n",
+ " 90 | \n",
+ " 90 | \n",
+ " 90 | \n",
+ "
\n",
+ " \n",
+ " | unique | \n",
+ " 90 | \n",
+ " 2 | \n",
+ " 85 | \n",
+ " 88 | \n",
+ " 86 | \n",
+ " 86 | \n",
+ " 89 | \n",
+ " 90 | \n",
+ " 90 | \n",
+ " 89 | \n",
+ " 88 | \n",
+ " 89 | \n",
+ " 90 | \n",
+ " 8 | \n",
+ " 17 | \n",
+ "
\n",
+ " \n",
+ " | top | \n",
+ " EXP-001 | \n",
+ " incluido | \n",
+ " 2026-08 aprox. | \n",
+ " Sergio Ferrer Fernández | \n",
+ " Stellantis España S.L. — planta de Vigo | \n",
+ " Fabricación de vehículos de motor; automoción | \n",
+ " 90 empleados en 2026 segun eInforma/Empresite;... | \n",
+ " Operaciones/planificación de capacidad | \n",
+ " El gerente describe cómo ausencias en taller p... | \n",
+ " https://es.linkedin.com/posts/rodrigo-moralejo... | \n",
+ " https://www.einforma.com/informacion-empresa/f... | \n",
+ " Autoría directiva y actividad industrial B2B v... | \n",
+ " Ficha archivada: textos_fuente/EXP-001.txt. Fe... | \n",
+ " Planificación y operaciones | \n",
+ " Flujo de trabajo, capacidad y pedidos | \n",
+ "
\n",
+ " \n",
+ " | freq | \n",
+ " 1 | \n",
+ " 89 | \n",
+ " 2 | \n",
+ " 2 | \n",
+ " 3 | \n",
+ " 5 | \n",
+ " 2 | \n",
+ " 1 | \n",
+ " 1 | \n",
+ " 2 | \n",
+ " 2 | \n",
+ " 2 | \n",
+ " 1 | \n",
+ " 21 | \n",
+ " 13 | \n",
+ "
\n",
+ " \n",
+ "
\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",
+ " id | \n",
+ " episodio_resumido | \n",
+ " grupo_similitud | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 31 | \n",
+ " EXP-032 | \n",
+ " control de calidad e información financiera | \n",
+ " Adopción, integración y calidad de sistemas de... | \n",
+ "
\n",
+ " \n",
+ " | 32 | \n",
+ " EXP-033 | \n",
+ " pedidos e incidencias | \n",
+ " Control de producción, inventario y visibilida... | \n",
+ "
\n",
+ " \n",
+ " | 35 | \n",
+ " EXP-036 | \n",
+ " Preimpresión y fabricación de planchas | \n",
+ " Obsolescencia de equipos de proceso | \n",
+ "
\n",
+ " \n",
+ " | 37 | \n",
+ " EXP-038 | \n",
+ " Recepción y transcripción de pedidos B2B | \n",
+ " Captura manual y transcripción de pedidos | \n",
+ "
\n",
+ " \n",
+ " | 41 | \n",
+ " EXP-042 | \n",
+ " Diseño | \n",
+ " Planificación de demanda, suministro y compras | \n",
+ "
\n",
+ " \n",
+ " | 47 | \n",
+ " EXP-048 | \n",
+ " Fiabilidad productiva y mantenimiento preventivo | \n",
+ " Fiabilidad, averías, mantenimiento y seguridad... | \n",
+ "
\n",
+ " \n",
+ " | 50 | \n",
+ " EXP-051 | \n",
+ " Seguridad de instalaciones de la nave de montaje | \n",
+ " Fiabilidad, averías, mantenimiento y seguridad... | \n",
+ "
\n",
+ " \n",
+ "
\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",
+ " | fecha_publicacion | \n",
+ " 2024 | \n",
+ " 2025 | \n",
+ " 2026 | \n",
+ "
\n",
+ " \n",
+ " | grupo_similitud | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | Adopción, integración y calidad de sistemas de información | \n",
+ " 0 | \n",
+ " 2 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " | Ajuste, cierre o traslado de capacidad/planta | \n",
+ " 0 | \n",
+ " 2 | \n",
+ " 9 | \n",
+ "
\n",
+ " \n",
+ " | Condiciones comerciales, coordinación de cliente y proyecto | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | Contratación, disponibilidad y formación de perfiles | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | Control de producción, inventario y visibilidad operativa | \n",
+ " 0 | \n",
+ " 2 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " | DANA: daños, interrupción y recuperación de planta/servicio | \n",
+ " 1 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " | Delegación, estructura y orientación organizativa | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " | Falta de componentes, servicios o recursos esenciales | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 4 | \n",
+ "
\n",
+ " \n",
+ " | Fiabilidad, averías, mantenimiento y seguridad industrial | \n",
+ " 0 | \n",
+ " 5 | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | Flujo de trabajo, capacidad y pedidos | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 10 | \n",
+ "
\n",
+ " \n",
+ " | Interrupción técnica o retraso de puesta en marcha | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | Obsolescencia de equipos de proceso | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | Planificación de demanda, suministro y compras | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " | Sobrecarga, ausencias y dependencia de personas clave | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " | Urgencias, coordinación y planificación diaria | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ "
\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",
+ " | dimension_tipo | \n",
+ " Comercial y proyectos | \n",
+ " Continuidad y recuperación | \n",
+ " Demanda y estructura industrial | \n",
+ " Equipos, instalaciones y seguridad | \n",
+ " Organización y personas | \n",
+ " Planificación y operaciones | \n",
+ " Sistemas y digitalización | \n",
+ " Suministro y dependencias externas | \n",
+ "
\n",
+ " \n",
+ " | grupo_similitud | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | Adopción, integración y calidad de sistemas de información | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 6 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " | Ajuste, cierre o traslado de capacidad/planta | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 11 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " | Captura manual y transcripción de pedidos | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " | Condiciones comerciales, coordinación de cliente y proyecto | \n",
+ " 5 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " | Contratación, disponibilidad y formación de perfiles | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 5 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " | Control de producción, inventario y visibilidad operativa | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 4 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " | DANA: daños, interrupción y recuperación de planta/servicio | \n",
+ " 0 | \n",
+ " 9 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " | Delegación, estructura y orientación organizativa | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 2 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " | Falta de componentes, servicios o recursos esenciales | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 5 | \n",
+ "
\n",
+ " \n",
+ " | Fiabilidad, averías, mantenimiento y seguridad industrial | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 9 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " | Flujo de trabajo, capacidad y pedidos | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 13 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " | Incendio: parada, traslado y recuperación productiva | \n",
+ " 0 | \n",
+ " 7 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " | Interrupción técnica o retraso de puesta en marcha | \n",
+ " 0 | \n",
+ " 2 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " | Obsolescencia de equipos de proceso | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " | Planificación de demanda, suministro y compras | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | Sobrecarga, ausencias y dependencia de personas clave | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 4 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " | Urgencias, coordinación y planificación diaria | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 4 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ "
\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": null,
+ "id": "3312e42c",
+ "metadata": {},
+ "outputs": [],
"source": []
}
],
@@ -46,7 +1596,15 @@
"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"
}
},