Análisis exploratorio de los datos asociados a las colecciones biológicas de la subfamilia Banchinae (Hymenoptera: Ichneumonidae) depositadas en el Museo Nacional de Costa Rica¶

Integrantes Grupo 5: Juan Matheo Queché y Jesús Armando Ugalde-Gómez¶

Descripción del proyecto y justificación¶

El proyecto se basa en el análisis y formas de curación (más adelante llamada biocuración) de los datos de los especímenes de las avispas parasíticas de la subfamilia Banchinae (Hymenoptera: Ichneumonidae) de los especímenes depositados en el Museo Nacional de Costa Rica.

Esta colección entomológica, así como la base de datos que contenía la información, fue desarrolla por el Instituto Nacional de Biodiversidad (INBio) a partir de 1989, y en el 2015 ambas fueron donadas al Museo Nacional de Costa Rica, quien como parte del proceso de gestión de las colecciones migró la información a su propia base de datos.

En una consulta a la base de datos pública de las colecciones biológicas del Museo Nacional de Costa Rica (https://biodiversidad.museocostarica.go.cr/) en relación con los datos de los especímenes en estudio se detectaron inconsistencias y errores en los valores de algunas variables.

Antecedentes¶

Las colecciones biológicas son la biblioteca de la biodiversidad y mediante la identificación de los vacíos de representación apoyan la planificación, el manejo, la consolidación de inventarios y la construcción de estrategias para su conservación (Borja-Acosta et al., 2020).

Desde finales de la década de los ochenta, y asociados a reuniones internacionales como la Cumbre de la Tierra y el Convenio sobre la Diversidad Biológica, varios países fortalecieron el estudio de su biodiversidad. En el caso de Latinoamérica pueden mencionar el Instituto Nacional de Biodiversidad (INBio), Costa Rica; la Comisión Nacional de Biodiversidad (CONABIO), México; y el Instituto Humboldt, Colombia.

Para la adecuada gestión de la biodiversidad es necesaria información y herramientas de carácter técnico y científico. Las colecciones biológicas aportan conocimiento científico esencial y evidencian vacíos de información sobre la diversidad biológica a nivel de organismos y molecular, que pueden orientar la toma de decisiones y la priorización de investigaciones; así como apoyar áreas de estudio y toma de decisiones como la economía, el comercio, la calidad ambiental, las especies invasoras, la alimentación y la agricultura, entre otras (Borja-Acosta et al., 2020; Darrigran, 2012; Luna et al., 2011).

Según Luna et al. (2011) las bases de datos deben contener información clara, sistematizada, accesible y actualizada, que enriquezca los registros de los ejemplares y sirva como fuente de información para los modelos estadísticos utilizados en los programas de conservación. Esta información debe estar disponible para todo usuario en cualquier parte del mundo y de fácil acceso.

El proceso de sistematización consiste en anexar la totalidad de información que se conozca acerca de cada ejemplar en la base de datos de la colección. Esto se realiza con el fin de proporcionar una herramienta útil para el manejo de la información, obtener datos específicos y actuales de cada ejemplar y agilizar la consulta de las colecciones; de tal forma que se encuentre al servicio no sólo de los investigadores asociados sino también para el público general interesado en los registros biológicos (Mesa Ramírez y Bernal, 2005).

En entre las tareas de la biocuración están:

La organización, estandarización, normalización, clasificación, anotación y análisis de la información. La normalización de la información de cada base de datos se realiza utilizando consultas diseñadas exprofeso para cada capa de información y para cada tipo de error y son de varios tipos: selección, actualización de datos, eliminación, creación de tablas y unión de datos, así como consultas más complejas o específicas estandarizadas con SQL (Structured Query Language, por sus siglas en inglés) (Castillo et al., 2014).

La fase denominada normalización establece la calidad de la información de una base de datos y para esto se examina su contenido; para facilitar el manejo y reconocimiento de la información (Castillo et al., 2014).

En la información biológica existen errores que únicamente se pueden detectar, en gran medida, gracias a la formación y experiencia biológica que el revisor de la base de datos tiene sobre el tema y el grupo taxonómico. Un analista con estudios de biólogo tiene los conocimientos suficientes sobre aspectos variados acerca de la biodiversidad, sin embargo, también es muy útil que haya realizado trabajo de campo y de gabinete para tener un panorama más completo sobre el tema.

Descripción del problema y el objetivo¶

El proyecto se basa en los datos asociados a la colección de avispas parasíticas de la subfamilia Banchinae (Hymenoptera: Ichneumonidae) depositada en el Museo Nacional de Costa Rica. La mayoría de esta colección biológica fue recolectada, montada, digitalizada e identificada, así como revisada desde el punto de vista taxonómico (Gauld y Ugalde-Gómez, 2002 Godoy, Gauld, 2002; Ugalde-Gómez & Gauld, 2002) durante el Inventario Nacional de Biodiversidad desarrollado por el Instituto Nacional de Biodiversidad (INBio) entre los años 1989-2014.

La digitalización de la colección se realizó en el Sistema de Información Atta desarrollada por el INBio como un sistema de manejo de información sobre biodiversidad, diseñado para apoyar el proceso medular del INBio: captura, procesamiento y diseminación de información; entre la información asociada los especímenes se encuentra: ubicación geográfica (con sus respectivas coordenadas), nombre de la persona que hizo la recolecta, fecha de recolección, metodología utilizada e información científica que los especialistas han generado para los diferentes especímenes. Atta se desarrolló en dos fases, la primera conocida como BIMS, de 1993 a 2000 y otra, Atta propiamente dicho, de 1997 en adelante (CRBio, s. f.; Mora, s. f.; Mora y Vargas, 2017).

En 2015, el INBio donó sus colecciones biológicas, junto con la base de datos que contiene la información asocia a cada espécimen -Atta-, al Museo Nacional de Costa Rica. La colección desarrollada por INBio durante 25 años contaba con aproximadamente 3 176 529 artrópodos (principalmente insectos -incluye el grupo de avispas parasíticas de este estudio-, arañas y escorpiones), 349 330 plantas y 49 598 hongos (Alvarado, 2015; Angulo, 2015; Soto, 2015).

En una consulta a la base de datos pública de las colecciones biológicas del Museo Nacional de Costa Rica (https://biodiversidad.museocostarica.go.cr/) en relación con los datos asociados con los especímenes de avispas parasíticas de la subfamilia Banchinae (Hymenoptera: Ichneumonidae) se detectaron inconsistencias y errores en algunas variables.

El objetivo del presente trabajo es analizar los datos asociados con los especímenes de avispas parasíticas de la subfamilia Banchinae (Hymenoptera: Ichneumonidae) de los especímenes depositados en el Museo Nacional de Costa Rica mediante el uso de herramientas de Pyhton para detectar y proponer mecanismo para corregirlas.

Descripción del conjunto de datos a utilizar con referencia formal a la fuente¶

Los datos asociados a la colección biológica de especímenes de la subfamilia Banchinae (Hymenoptera: Ichneumonidae) depositados en el Museo Nacional de Costa Rica se obtuvieron mediante el buscador en la siguiente dirección https://biodiversidad.museocostarica.go.cr/

El buscador permite la selección entre cuatro colecciones biológicas: Herbario, Artrópodos Mamíferos y Aves; para cada una de estas colecciones ofrece hasta 51 variables. En este estudio se seleccionaron 26 variables (columnas); los detalles se expondrán como parte del estudio.

Preprocesamiento y visualización de los datos¶

Procesamiento de datos¶

Instalación e importación de bibliotecas¶


  • pandas: especializada en el análisis y manipulación de datos
  • ydata-profiling o pandas-profiling: herramienta de Python que facilita el análisis exploratorio de datos
  • scikit-learn: proporciona herramientas para Machine Learning y análisis de datos en Python
  • numpy: maneja operaciones matemáticas y lógicas en matrices y arreglos.
  • seaborn: visualización de datos en Python con gráficos estadísticos
  • matplotlib: creación de gráficos y visualizaciones variadas
  • pandas-profiling: herramienta de Python que facilita el análisis exploratorio de datos
In [ ]:
!pip install pandas
!pip install ydata-profiling
!pip install scikit-learn
!pip install numpy
!pip install seaborn
!pip install matplotlib
!pip install geodatasets
Requirement already satisfied: pandas in /usr/local/lib/python3.10/dist-packages (2.0.3)
Requirement already satisfied: python-dateutil>=2.8.2 in /usr/local/lib/python3.10/dist-packages (from pandas) (2.8.2)
Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.10/dist-packages (from pandas) (2023.4)
Requirement already satisfied: tzdata>=2022.1 in /usr/local/lib/python3.10/dist-packages (from pandas) (2024.1)
Requirement already satisfied: numpy>=1.21.0 in /usr/local/lib/python3.10/dist-packages (from pandas) (1.25.2)
Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.10/dist-packages (from python-dateutil>=2.8.2->pandas) (1.16.0)
Collecting ydata-profiling
  Downloading ydata_profiling-4.8.3-py2.py3-none-any.whl (359 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 359.5/359.5 kB 2.6 MB/s eta 0:00:00
Requirement already satisfied: scipy<1.14,>=1.4.1 in /usr/local/lib/python3.10/dist-packages (from ydata-profiling) (1.11.4)
Requirement already satisfied: pandas!=1.4.0,<3,>1.1 in /usr/local/lib/python3.10/dist-packages (from ydata-profiling) (2.0.3)
Requirement already satisfied: matplotlib<3.9,>=3.2 in /usr/local/lib/python3.10/dist-packages (from ydata-profiling) (3.7.1)
Requirement already satisfied: pydantic>=2 in /usr/local/lib/python3.10/dist-packages (from ydata-profiling) (2.7.2)
Requirement already satisfied: PyYAML<6.1,>=5.0.0 in /usr/local/lib/python3.10/dist-packages (from ydata-profiling) (6.0.1)
Requirement already satisfied: jinja2<3.2,>=2.11.1 in /usr/local/lib/python3.10/dist-packages (from ydata-profiling) (3.1.4)
Collecting visions[type_image_path]<0.7.7,>=0.7.5 (from ydata-profiling)
  Downloading visions-0.7.6-py3-none-any.whl (104 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 104.8/104.8 kB 9.2 MB/s eta 0:00:00
Requirement already satisfied: numpy<2,>=1.16.0 in /usr/local/lib/python3.10/dist-packages (from ydata-profiling) (1.25.2)
Collecting htmlmin==0.1.12 (from ydata-profiling)
  Downloading htmlmin-0.1.12.tar.gz (19 kB)
  Preparing metadata (setup.py) ... done
Collecting phik<0.13,>=0.11.1 (from ydata-profiling)
  Downloading phik-0.12.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (686 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 686.1/686.1 kB 11.4 MB/s eta 0:00:00
Requirement already satisfied: requests<3,>=2.24.0 in /usr/local/lib/python3.10/dist-packages (from ydata-profiling) (2.31.0)
Requirement already satisfied: tqdm<5,>=4.48.2 in /usr/local/lib/python3.10/dist-packages (from ydata-profiling) (4.66.4)
Requirement already satisfied: seaborn<0.14,>=0.10.1 in /usr/local/lib/python3.10/dist-packages (from ydata-profiling) (0.13.1)
Collecting multimethod<2,>=1.4 (from ydata-profiling)
  Downloading multimethod-1.11.2-py3-none-any.whl (10 kB)
Requirement already satisfied: statsmodels<1,>=0.13.2 in /usr/local/lib/python3.10/dist-packages (from ydata-profiling) (0.14.2)
Collecting typeguard<5,>=3 (from ydata-profiling)
  Downloading typeguard-4.3.0-py3-none-any.whl (35 kB)
Collecting imagehash==4.3.1 (from ydata-profiling)
  Downloading ImageHash-4.3.1-py2.py3-none-any.whl (296 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 296.5/296.5 kB 11.8 MB/s eta 0:00:00
Requirement already satisfied: wordcloud>=1.9.1 in /usr/local/lib/python3.10/dist-packages (from ydata-profiling) (1.9.3)
Collecting dacite>=1.8 (from ydata-profiling)
  Downloading dacite-1.8.1-py3-none-any.whl (14 kB)
Requirement already satisfied: numba<1,>=0.56.0 in /usr/local/lib/python3.10/dist-packages (from ydata-profiling) (0.58.1)
Requirement already satisfied: PyWavelets in /usr/local/lib/python3.10/dist-packages (from imagehash==4.3.1->ydata-profiling) (1.6.0)
Requirement already satisfied: pillow in /usr/local/lib/python3.10/dist-packages (from imagehash==4.3.1->ydata-profiling) (9.4.0)
Requirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.10/dist-packages (from jinja2<3.2,>=2.11.1->ydata-profiling) (2.1.5)
Requirement already satisfied: contourpy>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib<3.9,>=3.2->ydata-profiling) (1.2.1)
Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.10/dist-packages (from matplotlib<3.9,>=3.2->ydata-profiling) (0.12.1)
Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib<3.9,>=3.2->ydata-profiling) (4.52.4)
Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib<3.9,>=3.2->ydata-profiling) (1.4.5)
Requirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib<3.9,>=3.2->ydata-profiling) (24.0)
Requirement already satisfied: pyparsing>=2.3.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib<3.9,>=3.2->ydata-profiling) (3.1.2)
Requirement already satisfied: python-dateutil>=2.7 in /usr/local/lib/python3.10/dist-packages (from matplotlib<3.9,>=3.2->ydata-profiling) (2.8.2)
Requirement already satisfied: llvmlite<0.42,>=0.41.0dev0 in /usr/local/lib/python3.10/dist-packages (from numba<1,>=0.56.0->ydata-profiling) (0.41.1)
Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.10/dist-packages (from pandas!=1.4.0,<3,>1.1->ydata-profiling) (2023.4)
Requirement already satisfied: tzdata>=2022.1 in /usr/local/lib/python3.10/dist-packages (from pandas!=1.4.0,<3,>1.1->ydata-profiling) (2024.1)
Requirement already satisfied: joblib>=0.14.1 in /usr/local/lib/python3.10/dist-packages (from phik<0.13,>=0.11.1->ydata-profiling) (1.4.2)
Requirement already satisfied: annotated-types>=0.4.0 in /usr/local/lib/python3.10/dist-packages (from pydantic>=2->ydata-profiling) (0.7.0)
Requirement already satisfied: pydantic-core==2.18.3 in /usr/local/lib/python3.10/dist-packages (from pydantic>=2->ydata-profiling) (2.18.3)
Requirement already satisfied: typing-extensions>=4.6.1 in /usr/local/lib/python3.10/dist-packages (from pydantic>=2->ydata-profiling) (4.12.0)
Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests<3,>=2.24.0->ydata-profiling) (3.3.2)
Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests<3,>=2.24.0->ydata-profiling) (3.7)
Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests<3,>=2.24.0->ydata-profiling) (2.0.7)
Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests<3,>=2.24.0->ydata-profiling) (2024.2.2)
Requirement already satisfied: patsy>=0.5.6 in /usr/local/lib/python3.10/dist-packages (from statsmodels<1,>=0.13.2->ydata-profiling) (0.5.6)
Requirement already satisfied: attrs>=19.3.0 in /usr/local/lib/python3.10/dist-packages (from visions[type_image_path]<0.7.7,>=0.7.5->ydata-profiling) (23.2.0)
Requirement already satisfied: networkx>=2.4 in /usr/local/lib/python3.10/dist-packages (from visions[type_image_path]<0.7.7,>=0.7.5->ydata-profiling) (3.3)
Requirement already satisfied: six in /usr/local/lib/python3.10/dist-packages (from patsy>=0.5.6->statsmodels<1,>=0.13.2->ydata-profiling) (1.16.0)
Building wheels for collected packages: htmlmin
  Building wheel for htmlmin (setup.py) ... done
  Created wheel for htmlmin: filename=htmlmin-0.1.12-py3-none-any.whl size=27080 sha256=7cc4fcd284f7e29faaffa2bc057749756ca34cb8690f0b91347a5501dd0687eb
  Stored in directory: /root/.cache/pip/wheels/dd/91/29/a79cecb328d01739e64017b6fb9a1ab9d8cb1853098ec5966d
Successfully built htmlmin
Installing collected packages: htmlmin, typeguard, multimethod, dacite, imagehash, visions, phik, ydata-profiling
Successfully installed dacite-1.8.1 htmlmin-0.1.12 imagehash-4.3.1 multimethod-1.11.2 phik-0.12.4 typeguard-4.3.0 visions-0.7.6 ydata-profiling-4.8.3
Requirement already satisfied: scikit-learn in /usr/local/lib/python3.10/dist-packages (1.2.2)
Requirement already satisfied: numpy>=1.17.3 in /usr/local/lib/python3.10/dist-packages (from scikit-learn) (1.25.2)
Requirement already satisfied: scipy>=1.3.2 in /usr/local/lib/python3.10/dist-packages (from scikit-learn) (1.11.4)
Requirement already satisfied: joblib>=1.1.1 in /usr/local/lib/python3.10/dist-packages (from scikit-learn) (1.4.2)
Requirement already satisfied: threadpoolctl>=2.0.0 in /usr/local/lib/python3.10/dist-packages (from scikit-learn) (3.5.0)
Requirement already satisfied: numpy in /usr/local/lib/python3.10/dist-packages (1.25.2)
Requirement already satisfied: seaborn in /usr/local/lib/python3.10/dist-packages (0.13.1)
Requirement already satisfied: numpy!=1.24.0,>=1.20 in /usr/local/lib/python3.10/dist-packages (from seaborn) (1.25.2)
Requirement already satisfied: pandas>=1.2 in /usr/local/lib/python3.10/dist-packages (from seaborn) (2.0.3)
Requirement already satisfied: matplotlib!=3.6.1,>=3.4 in /usr/local/lib/python3.10/dist-packages (from seaborn) (3.7.1)
Requirement already satisfied: contourpy>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (1.2.1)
Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.10/dist-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (0.12.1)
Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (4.52.4)
Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (1.4.5)
Requirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (24.0)
Requirement already satisfied: pillow>=6.2.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (9.4.0)
Requirement already satisfied: pyparsing>=2.3.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (3.1.2)
Requirement already satisfied: python-dateutil>=2.7 in /usr/local/lib/python3.10/dist-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (2.8.2)
Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.10/dist-packages (from pandas>=1.2->seaborn) (2023.4)
Requirement already satisfied: tzdata>=2022.1 in /usr/local/lib/python3.10/dist-packages (from pandas>=1.2->seaborn) (2024.1)
Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.10/dist-packages (from python-dateutil>=2.7->matplotlib!=3.6.1,>=3.4->seaborn) (1.16.0)
Requirement already satisfied: matplotlib in /usr/local/lib/python3.10/dist-packages (3.7.1)
Requirement already satisfied: contourpy>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib) (1.2.1)
Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.10/dist-packages (from matplotlib) (0.12.1)
Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib) (4.52.4)
Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib) (1.4.5)
Requirement already satisfied: numpy>=1.20 in /usr/local/lib/python3.10/dist-packages (from matplotlib) (1.25.2)
Requirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib) (24.0)
Requirement already satisfied: pillow>=6.2.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib) (9.4.0)
Requirement already satisfied: pyparsing>=2.3.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib) (3.1.2)
Requirement already satisfied: python-dateutil>=2.7 in /usr/local/lib/python3.10/dist-packages (from matplotlib) (2.8.2)
Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.10/dist-packages (from python-dateutil>=2.7->matplotlib) (1.16.0)
Collecting geodatasets
  Downloading geodatasets-2023.12.0-py3-none-any.whl (19 kB)
Requirement already satisfied: pooch in /usr/local/lib/python3.10/dist-packages (from geodatasets) (1.8.1)
Requirement already satisfied: platformdirs>=2.5.0 in /usr/local/lib/python3.10/dist-packages (from pooch->geodatasets) (4.2.2)
Requirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.10/dist-packages (from pooch->geodatasets) (24.0)
Requirement already satisfied: requests>=2.19.0 in /usr/local/lib/python3.10/dist-packages (from pooch->geodatasets) (2.31.0)
Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests>=2.19.0->pooch->geodatasets) (3.3.2)
Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests>=2.19.0->pooch->geodatasets) (3.7)
Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests>=2.19.0->pooch->geodatasets) (2.0.7)
Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests>=2.19.0->pooch->geodatasets) (2024.2.2)
Installing collected packages: geodatasets
Successfully installed geodatasets-2023.12.0
In [ ]:
import pandas as pd
from sklearn import datasets
from ydata_profiling import ProfileReport
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline
import geopandas as gpd
import geodatasets

Importación de los datos (Pandas)¶

In [ ]:
from google.colab import drive
drive.mount('/content/drive')

df = pd.read_csv('/content/drive/MyDrive/Colab Notebooks/Banchinae/Banchinae_BDMNCR_28may2024.csv')
Mounted at /content/drive

Análisis exploratorio de datos¶

● En esta sección pueden profundizar más sobre el conjunto de datos que van a trabajar, mostrar algún problema presente en ellos, o bien proponer un trabajo a realizar con los mismos.

In [ ]:
# Imprimir los títulos de las columnas de manera formateada
print("Títulos de las columnas:")
for col in df.columns:
    print(f"- {col}")
Títulos de las columnas:
- tribu
- genero
- especie
- rango_taxonomico
- fecha_inicio_recoleccion
- fecha_final_recoleccion
- identificador
- fecha_de_identificacion
- pais
- provincia
- canton
- distrito
- latitud_decimal
- longitud_decimal
- area_conservacion
- area_protegida
- vertiente
- elevacion_minima
- elevacion_maxima
- tipo_especimen
- tipo_nomenclatural
- tipo_registro
- metodo_recolecta
In [ ]:
# Generar el reporte de pandas-profiling
nombre = "Banchinae"
profile = ProfileReport(df, title=nombre, explorative=True)

# Desplegar el reporte
profile.to_notebook_iframe()
Summarize dataset:   0%|          | 0/5 [00:00<?, ?it/s]
Generate report structure:   0%|          | 0/1 [00:00<?, ?it/s]
Render HTML:   0%|          | 0/1 [00:00<?, ?it/s]
In [ ]:
# Ver los primeros 10 datos del DataFrame
df.head(10)
Out[ ]:
tribu genero especie rango_taxonomico fecha_inicio_recoleccion fecha_final_recoleccion identificador fecha_de_identificacion pais provincia ... vertiente elevacion_minima elevacion_maxima tipo_especimen tipo_nomenclatural tipo_registro categoria_especimen origen_especimen etapa_vida metodo_recolecta
0 Atrophini Mnioes Mnioes hiles Especie 1989-04-01 1989-04-30 Gauld Ian 2005-08-19 Costa Rica Puntarenas ... NaN 1239.0 1300.0 Organismo NaN NaN Individual NaN Adulto Desconocido
1 Atrophini Mnioes Mnioes hiles Especie 1989-04-01 1989-04-30 Gauld Ian 2005-08-19 Costa Rica Puntarenas ... NaN 1239.0 1300.0 Organismo NaN NaN Individual NaN Adulto Desconocido
2 Atrophini Meniscomorpha Meniscomorpha helspina Especie 1987-05-01 1987-12-31 Gauld Ian 2005-05-26 Costa Rica Guanacaste ... NaN 1100.0 1100.0 Organismo NaN NaN Individual NaN Adulto Desconocido
3 Glyptini Zaglytomorpha NaN Genero 1990-03-03 1990-03-03 Godoy Carolina 2003-02-21 Costa Rica Heredia ... NaN 2500.0 2500.0 NaN NaN NaN Individual NaN Adulto Desconocido
4 Atrophini Mnioes Mnioes jucundus Especie 1990-07-19 1990-07-19 Gauld Ian 2005-08-24 Costa Rica Guanacaste ... NaN 300.0 300.0 Organismo NaN NaN Individual NaN Adulto Manual
5 Atrophini Hapsinotus Hapsinotus convexus Especie 1990-06-01 1990-06-30 Gauld Ian 2005-04-20 Costa Rica Limón ... NaN 400.0 400.0 Organismo NaN NaN Individual NaN Adulto Desconocido
6 Atrophini Hapsinotus Hapsinotus parvatus Especie 1989-09-01 1989-11-30 Gauld Ian 2005-05-16 Costa Rica Puntarenas ... NaN 10.0 10.0 Organismo NaN NaN Individual NaN Adulto Desconocido
7 Atrophini Hapsinotus Hapsinotus parvatus Especie 1989-04-01 1989-08-31 Gauld Ian 2005-05-16 Costa Rica Puntarenas ... NaN 50.0 50.0 Organismo NaN NaN Individual NaN Adulto Manual
8 Atrophini Hapsinotus Hapsinotus albomaculatus Especie 1989-04-01 1989-08-31 Gauld Ian 2005-04-18 Costa Rica Puntarenas ... NaN 50.0 50.0 Organismo NaN NaN Individual NaN Adulto Manual
9 Atrophini Hapsinotus Hapsinotus carinatus Especie 1989-10-01 1989-11-30 Gauld Ian 2005-04-19 Costa Rica Limón ... NaN 400.0 400.0 Organismo NaN NaN Individual NaN Adulto Manual

10 rows × 26 columns

In [ ]:
# Ver últimos 10 datos del DataFram
df.tail(10)
Out[ ]:
tribu genero especie rango_taxonomico fecha_inicio_recoleccion fecha_final_recoleccion identificador fecha_de_identificacion pais provincia ... vertiente elevacion_minima elevacion_maxima tipo_especimen tipo_nomenclatural tipo_registro categoria_especimen origen_especimen etapa_vida metodo_recolecta
11290 Atrophini Mnioes Mnioes teves Especie 1992-10-22 1992-11-08 Gauld Ian 2005-08-29 Costa Rica Guanacaste ... NaN 700.0 700.0 Organismo NaN NaN Individual NaN Adulto Desconocido
11291 Atrophini Loxodocus Loxodocus luteator Especie 1992-09-01 1992-09-30 Gauld Ian 2005-05-16 Costa Rica Cartago ... NaN 1250.0 1250.0 Organismo Paratipo NaN Individual NaN Adulto Desconocido
11292 Atrophini Loxodocus Loxodocus luteator Especie 1992-09-01 1992-09-30 Gauld Ian 2005-05-16 Costa Rica Cartago ... NaN 1250.0 1250.0 Organismo NaN NaN Individual NaN Adulto Desconocido
11293 Atrophini Mnioes Mnioes nalbes Especie 1992-09-01 1992-09-30 Gauld Ian 2005-08-30 Costa Rica Puntarenas ... NaN 200.0 200.0 Organismo NaN NaN Individual NaN Adulto Desconocido
11294 Banchini Exetastes Exetastes tarsalis Especie 1992-03-01 1992-03-31 Gauld Ian 2005-04-06 Costa Rica Puntarenas ... NaN 1500.0 1500.0 Organismo NaN NaN Individual NaN Adulto Desconocido
11295 Atrophini Lissonota Lissonota pseudeleboea Especie 1992-03-01 1992-03-31 Gauld Ian 2005-05-19 Costa Rica Puntarenas ... NaN 1500.0 1500.0 Organismo NaN NaN Individual NaN Adulto Desconocido
11296 Atrophini Mnioes Mnioes nalbes Especie 1992-12-01 1992-12-31 Gauld Ian 2005-08-30 Costa Rica Limón ... NaN 100.0 100.0 Organismo NaN NaN Individual NaN Adulto Desconocido
11297 Atrophini Syzeuctus Syzeuctus vedoris Especie 1992-12-01 1992-12-31 Gauld Ian 2007-09-05 Costa Rica Limón ... NaN 100.0 100.0 Organismo NaN NaN Individual NaN Adulto Desconocido
11298 Atrophini Meniscomorpha Meniscomorpha xeresha Especie 1992-12-01 1992-12-31 Gauld Ian 2005-05-27 Costa Rica Limón ... NaN 100.0 100.0 Organismo NaN NaN Individual NaN Adulto Desconocido
11299 Atrophini Syzeuctus Syzeuctus hezonicus Especie 1993-02-09 1993-02-27 Gauld Ian 2007-09-06 Costa Rica Guanacaste ... NaN 800.0 800.0 Organismo NaN NaN Individual NaN Adulto Desconocido

10 rows × 26 columns

In [ ]:
# Ver los primeros 10 datos de una columna especifica
df['especie'].head(10)
Out[ ]:
0                Mnioes hiles
1                Mnioes hiles
2      Meniscomorpha helspina
3                         NaN
4             Mnioes jucundus
5         Hapsinotus convexus
6         Hapsinotus parvatus
7         Hapsinotus parvatus
8    Hapsinotus albomaculatus
9        Hapsinotus carinatus
Name: especie, dtype: object

Trabajo, procesamiento y arreglo de datos¶

In [ ]:
# Cantidad de datos no nulos en cada columna
df.count()
Out[ ]:
tribu                       11300
genero                       9693
especie                      9144
rango_taxonomico            11300
fecha_inicio_recoleccion    11300
fecha_final_recoleccion     11300
identificador               11297
fecha_de_identificacion     11246
pais                        11300
provincia                   11300
canton                      11300
distrito                    11279
latitud_decimal             11300
longitud_decimal            11300
area_conservacion           11300
area_protegida              11294
vertiente                       0
elevacion_minima            11185
elevacion_maxima            11185
tipo_especimen              11183
tipo_nomenclatural            677
tipo_registro                   0
metodo_recolecta            11300
dtype: int64

Se eliminaron las columnas con datos nulos vertiente y tipo_registro, mediante el código df = df.drop

tipo_regitro se utiliza en la base datos con el valor de: ejemplar.

vertiente tiene valores de cero, en las conclusiones se valoran opciones en relación con esta variable.

In [ ]:
#Eliminación de columnas con datos constantes: categoria_especimen, origen_especimen y etapa_vida
df = df.drop(['categoria_especimen', 'origen_especimen', 'etapa_vida'], axis=1)
In [ ]:
# Imprimir los títulos de las columnas de manera formateada
print("Títulos de las columnas:")
for col in df.columns:
    print(f"- {col}")
Títulos de las columnas:
- tribu
- genero
- especie
- rango_taxonomico
- fecha_inicio_recoleccion
- fecha_final_recoleccion
- identificador
- fecha_de_identificacion
- pais
- provincia
- canton
- distrito
- latitud_decimal
- longitud_decimal
- area_conservacion
- area_protegida
- vertiente
- elevacion_minima
- elevacion_maxima
- tipo_especimen
- tipo_nomenclatural
- tipo_registro
- metodo_recolecta
In [ ]:
# Cantidad de datos repetidos en una columna
df['especie'].value_counts()
Out[ ]:
especie
Mnioes jucundus            2387
Mnioes garnes               731
Lissonota pseudeleboea      681
Syzeuctus hezonicus         258
Diradops mexicana           256
                           ... 
Diradops vilmae               1
Diradops opeva                1
Exetastes costaricensis       1
Meniscomorpha besheba         1
Quillonota petronae           1
Name: count, Length: 217, dtype: int64
In [ ]:
# Datos faltantes
condicion = df['identificador'].isna()
df[condicion]
Out[ ]:
tribu genero especie rango_taxonomico fecha_inicio_recoleccion fecha_final_recoleccion identificador fecha_de_identificacion pais provincia ... longitud_decimal area_conservacion area_protegida vertiente elevacion_minima elevacion_maxima tipo_especimen tipo_nomenclatural tipo_registro metodo_recolecta
498 Atrophini Quillonota Quillonota zurqui Especie 1988-10-01 1988-11-30 NaN NaN Costa Rica Puntarenas ... -84.012222 Cordillera Volcánica Central Adulto NaN 1600.0 1600.0 Organismo Holotipo NaN Desconocido
499 Atrophini Quillonota Quillonota incompleta Especie 1990-09-01 1990-11-30 NaN NaN Costa Rica Puntarenas ... -84.012222 Cordillera Volcánica Central Adulto NaN 1600.0 1600.0 Organismo Holotipo NaN Desconocido
5227 Atrophini Wahlamia Wahlamia phloridiphobia Especie 1995-03-01 1995-03-31 NaN NaN Costa Rica Guanacaste ... -85.427182 Guanacaste Adulto NaN 700.0 700.0 Organismo Holotipo NaN Trampa Malaise

3 rows × 23 columns

In [ ]:
# Filtrado de columnas específico
headers = [
    'tribu','genero','especie','rango_taxonomico','area_protegida'
]
df_acortado = df[headers]

# Al usar una lista como campo obtenemos un objeto tipo DataFrame.
print("Tipo:", type(df[headers]))

df_acortado
Tipo: <class 'pandas.core.frame.DataFrame'>
Out[ ]:
tribu genero especie rango_taxonomico area_protegida
0 Atrophini Mnioes Mnioes hiles Especie Adulto
1 Atrophini Mnioes Mnioes hiles Especie Adulto
2 Atrophini Meniscomorpha Meniscomorpha helspina Especie Adulto
3 Glyptini Zaglytomorpha NaN Genero Adulto
4 Atrophini Mnioes Mnioes jucundus Especie Adulto
... ... ... ... ... ...
11295 Atrophini Lissonota Lissonota pseudeleboea Especie Adulto
11296 Atrophini Mnioes Mnioes nalbes Especie Adulto
11297 Atrophini Syzeuctus Syzeuctus vedoris Especie Adulto
11298 Atrophini Meniscomorpha Meniscomorpha xeresha Especie Adulto
11299 Atrophini Syzeuctus Syzeuctus hezonicus Especie Adulto

11300 rows × 5 columns

In [ ]:
#  datos nulos
condicion = df['tipo_especimen'].isna()
df[condicion]
Out[ ]:
tribu genero especie rango_taxonomico fecha_inicio_recoleccion fecha_final_recoleccion identificador fecha_de_identificacion pais provincia ... longitud_decimal area_conservacion area_protegida vertiente elevacion_minima elevacion_maxima tipo_especimen tipo_nomenclatural tipo_registro metodo_recolecta
3 Glyptini Zaglytomorpha NaN Genero 1990-03-03 1990-03-03 Godoy Carolina 2003-02-21 Costa Rica Heredia ... -84.121131 Cordillera Volcánica Central Adulto NaN 2500.0 2500.0 NaN NaN NaN Desconocido
1590 Glyptini Zaglytomorpha Zaglytomorpha auxiliadorae Especie 1989-07-01 1989-08-31 Godoy Carolina 2003-02-20 Costa Rica Guanacaste ... -85.498890 Guanacaste Adulto NaN 500.0 600.0 NaN NaN NaN Desconocido
1591 Glyptini Zaglytomorpha Zaglytomorpha auxiliadorae Especie 1989-07-01 1989-07-31 Godoy Carolina 2003-02-20 Costa Rica Guanacaste ... -85.470423 Guanacaste Adulto NaN 1100.0 1100.0 NaN NaN NaN Desconocido
1592 Glyptini Zaglytomorpha Zaglytomorpha auxiliadorae Especie 1989-07-01 1989-07-31 Godoy Carolina 2003-02-20 Costa Rica Guanacaste ... -85.470423 Guanacaste Adulto NaN 1100.0 1100.0 NaN NaN NaN Desconocido
1594 Glyptini Sphelodon Sphelodon wardae Especie 1989-01-01 1989-12-31 Godoy Carolina 2003-02-24 Costa Rica San José ... -83.966543 Cordillera Volcánica Central Adulto NaN 1000.0 1000.0 NaN Paratipo NaN Manual
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
7361 Glyptini Zaglytomorpha Zaglytomorpha cornuta Especie 1999-10-30 1999-10-30 Godoy Carolina 2003-02-20 Costa Rica Alajuela ... -84.690462 Arenal Adulto NaN 1100.0 1100.0 NaN NaN NaN Manual
7362 Glyptini Zaglytomorpha Zaglytomorpha albopicta Especie 1997-06-01 1997-10-01 Godoy Carolina 2003-02-21 Costa Rica Alajuela ... -84.606200 Arenal Adulto NaN 1200.0 1200.0 NaN NaN NaN Manual
7364 Glyptini Sphelodon Sphelodon ugaldei Especie 1995-03-01 1995-05-31 Godoy Carolina 2003-02-21 Costa Rica Puntarenas ... -82.838258 La Amistad Pacífico Adulto NaN 1500.0 1500.0 NaN NaN NaN Manual
7365 Glyptini Sphelodon Sphelodon ugaldei Especie 1995-03-01 1995-05-31 Godoy Carolina 2003-02-21 Costa Rica Puntarenas ... -82.838258 La Amistad Pacífico Adulto NaN 1500.0 1500.0 NaN NaN NaN Manual
7389 Glyptini Sphelodon Sphelodon phoxopteridis Especie 1992-03-01 1992-03-31 Godoy Carolina 2003-02-21 Costa Rica Limón ... -83.716512 Tortuguero Adulto NaN 150.0 150.0 NaN NaN NaN Trampa de Luz

117 rows × 23 columns

In [ ]:
# cambiar datos Nulos con un valor único
fixed = df[condicion].fillna("No asignado")
fixed
Out[ ]:
tribu genero especie rango_taxonomico fecha_inicio_recoleccion fecha_final_recoleccion identificador fecha_de_identificacion pais provincia ... longitud_decimal area_conservacion area_protegida vertiente elevacion_minima elevacion_maxima tipo_especimen tipo_nomenclatural tipo_registro metodo_recolecta
3 Glyptini Zaglytomorpha No asignado Genero 1990-03-03 1990-03-03 Godoy Carolina 2003-02-21 Costa Rica Heredia ... -84.121131 Cordillera Volcánica Central Adulto No asignado 2500.0 2500.0 No asignado No asignado No asignado Desconocido
1590 Glyptini Zaglytomorpha Zaglytomorpha auxiliadorae Especie 1989-07-01 1989-08-31 Godoy Carolina 2003-02-20 Costa Rica Guanacaste ... -85.498890 Guanacaste Adulto No asignado 500.0 600.0 No asignado No asignado No asignado Desconocido
1591 Glyptini Zaglytomorpha Zaglytomorpha auxiliadorae Especie 1989-07-01 1989-07-31 Godoy Carolina 2003-02-20 Costa Rica Guanacaste ... -85.470423 Guanacaste Adulto No asignado 1100.0 1100.0 No asignado No asignado No asignado Desconocido
1592 Glyptini Zaglytomorpha Zaglytomorpha auxiliadorae Especie 1989-07-01 1989-07-31 Godoy Carolina 2003-02-20 Costa Rica Guanacaste ... -85.470423 Guanacaste Adulto No asignado 1100.0 1100.0 No asignado No asignado No asignado Desconocido
1594 Glyptini Sphelodon Sphelodon wardae Especie 1989-01-01 1989-12-31 Godoy Carolina 2003-02-24 Costa Rica San José ... -83.966543 Cordillera Volcánica Central Adulto No asignado 1000.0 1000.0 No asignado Paratipo No asignado Manual
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
7361 Glyptini Zaglytomorpha Zaglytomorpha cornuta Especie 1999-10-30 1999-10-30 Godoy Carolina 2003-02-20 Costa Rica Alajuela ... -84.690462 Arenal Adulto No asignado 1100.0 1100.0 No asignado No asignado No asignado Manual
7362 Glyptini Zaglytomorpha Zaglytomorpha albopicta Especie 1997-06-01 1997-10-01 Godoy Carolina 2003-02-21 Costa Rica Alajuela ... -84.606200 Arenal Adulto No asignado 1200.0 1200.0 No asignado No asignado No asignado Manual
7364 Glyptini Sphelodon Sphelodon ugaldei Especie 1995-03-01 1995-05-31 Godoy Carolina 2003-02-21 Costa Rica Puntarenas ... -82.838258 La Amistad Pacífico Adulto No asignado 1500.0 1500.0 No asignado No asignado No asignado Manual
7365 Glyptini Sphelodon Sphelodon ugaldei Especie 1995-03-01 1995-05-31 Godoy Carolina 2003-02-21 Costa Rica Puntarenas ... -82.838258 La Amistad Pacífico Adulto No asignado 1500.0 1500.0 No asignado No asignado No asignado Manual
7389 Glyptini Sphelodon Sphelodon phoxopteridis Especie 1992-03-01 1992-03-31 Godoy Carolina 2003-02-21 Costa Rica Limón ... -83.716512 Tortuguero Adulto No asignado 150.0 150.0 No asignado No asignado No asignado Trampa de Luz

117 rows × 23 columns

Análisis descriptivo y gráficos¶

In [ ]:
# Calcular el número de tribus
total_specie = df['tribu'].nunique()
# Imprimir el resultado
print(f"Total de tribus: {total_specie}")
Total de tribus: 4
In [ ]:
# Calcular el número de géneros
total_specie = df['genero'].nunique()
# Imprimir el resultado
print(f"Total de géneros: {total_specie}")
Total de géneros: 25
In [ ]:
# Calcular el número de especies.
total_specie = df['especie'].nunique()
# Imprimir el resultado
print(f"Total species: {total_specie}")
Total species: 217
In [ ]:
#calcular la abundancia relativa de cada género

species_counts = df['tribu'].value_counts()
total_count = species_counts.sum()
relative_abundance = (species_counts / total_count) * 100

print(relative_abundance)
tribu
Atrophini    77.796460
"            14.221239
Banchini      4.238938
Glyptini      3.743363
Name: count, dtype: float64
In [ ]:
# Contar las ocurrencias de cada valor único en la columna 'tribu'
species_counts = df['tribu'].value_counts()

# Tamaño del gráfico
plt.figure(figsize=(6, 6))

# Crear la gráfica de pastel
plt.pie(species_counts, labels=species_counts.index, autopct='%1.1f%%')

# Título del gráfico
plt.title('Porcentaje de especímenes por tribu')

plt.show()
No description has been provided for this image
In [ ]:
#calcular la abundancia relativa de cada género

species_counts = df['genero'].value_counts()
total_count = species_counts.sum()
relative_abundance = (species_counts / total_count) * 100

print(relative_abundance)
genero
Mnioes           40.782008
Lissonota        13.370474
Syzeuctus         9.016816
Diradops          8.789848
Meniscomorpha     8.335913
Exetastes         4.941711
Hapsinotus        3.590220
Podeleboea        2.661715
Zaglytomorpha     1.991128
Glypta            1.609409
Loxodocus         1.464975
Sphelodon         0.763438
Wahlamia          0.639637
Hadrostethus      0.505519
Cordeleboea       0.299185
Eudeleboea        0.278552
Occia             0.257918
Lissocaulus       0.206334
Ptychopsis        0.175384
Procestus         0.134117
Quillonota        0.092851
Hylesicida        0.061900
Hadeleboea        0.010317
Leptobatopsis     0.010317
Cecidopimpla      0.010317
Name: count, dtype: float64
In [ ]:
# Contar las ocurrencias de cada valor único en la columna 'genero'
species_counts = df['genero'].value_counts()

# Tamaño del gráfico
plt.figure(figsize=(6, 6))

# Crear la gráfica de pastel
plt.pie(species_counts, labels=species_counts.index, autopct='%1.1f%%')

# Título del gráfico
plt.title('Porcentaje de especímenes por género')

plt.show()
No description has been provided for this image
In [ ]:
#calcular la abundancia relativa de cada especie

species_counts = df['especie'].value_counts()
total_count = species_counts.sum()
relative_abundance = (species_counts / total_count) * 100

print(relative_abundance)
especie
Mnioes jucundus            26.104549
Mnioes garnes               7.994313
Lissonota pseudeleboea      7.447507
Syzeuctus hezonicus         2.821522
Diradops mexicana           2.799650
                             ...    
Diradops vilmae             0.010936
Diradops opeva              0.010936
Exetastes costaricensis     0.010936
Meniscomorpha besheba       0.010936
Quillonota petronae         0.010936
Name: count, Length: 217, dtype: float64
In [ ]:
# Importar geopandas y geodatasets
!pip install geodatasets
import geopandas as gpd
import geodatasets
import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
Requirement already satisfied: geodatasets in /usr/local/lib/python3.10/dist-packages (2023.12.0)
Requirement already satisfied: pooch in /usr/local/lib/python3.10/dist-packages (from geodatasets) (1.8.1)
Requirement already satisfied: platformdirs>=2.5.0 in /usr/local/lib/python3.10/dist-packages (from pooch->geodatasets) (4.2.2)
Requirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.10/dist-packages (from pooch->geodatasets) (24.0)
Requirement already satisfied: requests>=2.19.0 in /usr/local/lib/python3.10/dist-packages (from pooch->geodatasets) (2.31.0)
Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests>=2.19.0->pooch->geodatasets) (3.3.2)
Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests>=2.19.0->pooch->geodatasets) (3.7)
Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests>=2.19.0->pooch->geodatasets) (2.0.7)
Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests>=2.19.0->pooch->geodatasets) (2024.2.2)
In [ ]:
from google.colab import drive
drive.mount('/content/drive')
Drive already mounted at /content/drive; to attempt to forcibly remount, call drive.mount("/content/drive", force_remount=True).
In [ ]:
# CSV coordenadas de registros de especies
observaciones = pd.read_csv("/content/drive/MyDrive/Colab Notebooks/Banchinae/Banchinae_BDMNCR_28may2024.csv")
observaciones
Out[ ]:
tribu genero especie rango_taxonomico fecha_inicio_recoleccion fecha_final_recoleccion identificador fecha_de_identificacion pais provincia ... vertiente elevacion_minima elevacion_maxima tipo_especimen tipo_nomenclatural tipo_registro categoria_especimen origen_especimen etapa_vida metodo_recolecta
0 Atrophini Mnioes Mnioes hiles Especie 1989-04-01 1989-04-30 Gauld Ian 2005-08-19 Costa Rica Puntarenas ... NaN 1239.0 1300.0 Organismo NaN NaN Individual NaN Adulto Desconocido
1 Atrophini Mnioes Mnioes hiles Especie 1989-04-01 1989-04-30 Gauld Ian 2005-08-19 Costa Rica Puntarenas ... NaN 1239.0 1300.0 Organismo NaN NaN Individual NaN Adulto Desconocido
2 Atrophini Meniscomorpha Meniscomorpha helspina Especie 1987-05-01 1987-12-31 Gauld Ian 2005-05-26 Costa Rica Guanacaste ... NaN 1100.0 1100.0 Organismo NaN NaN Individual NaN Adulto Desconocido
3 Glyptini Zaglytomorpha NaN Genero 1990-03-03 1990-03-03 Godoy Carolina 2003-02-21 Costa Rica Heredia ... NaN 2500.0 2500.0 NaN NaN NaN Individual NaN Adulto Desconocido
4 Atrophini Mnioes Mnioes jucundus Especie 1990-07-19 1990-07-19 Gauld Ian 2005-08-24 Costa Rica Guanacaste ... NaN 300.0 300.0 Organismo NaN NaN Individual NaN Adulto Manual
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
11295 Atrophini Lissonota Lissonota pseudeleboea Especie 1992-03-01 1992-03-31 Gauld Ian 2005-05-19 Costa Rica Puntarenas ... NaN 1500.0 1500.0 Organismo NaN NaN Individual NaN Adulto Desconocido
11296 Atrophini Mnioes Mnioes nalbes Especie 1992-12-01 1992-12-31 Gauld Ian 2005-08-30 Costa Rica Limón ... NaN 100.0 100.0 Organismo NaN NaN Individual NaN Adulto Desconocido
11297 Atrophini Syzeuctus Syzeuctus vedoris Especie 1992-12-01 1992-12-31 Gauld Ian 2007-09-05 Costa Rica Limón ... NaN 100.0 100.0 Organismo NaN NaN Individual NaN Adulto Desconocido
11298 Atrophini Meniscomorpha Meniscomorpha xeresha Especie 1992-12-01 1992-12-31 Gauld Ian 2005-05-27 Costa Rica Limón ... NaN 100.0 100.0 Organismo NaN NaN Individual NaN Adulto Desconocido
11299 Atrophini Syzeuctus Syzeuctus hezonicus Especie 1993-02-09 1993-02-27 Gauld Ian 2007-09-06 Costa Rica Guanacaste ... NaN 800.0 800.0 Organismo NaN NaN Individual NaN Adulto Desconocido

11300 rows × 26 columns

In [ ]:
# Convertir las coordenadas a POINTS
obvs_points = gpd.points_from_xy(observaciones.longitud_decimal, observaciones.latitud_decimal)
obvs_points
Out[ ]:
<GeometryArray>
[ <POINT (-82.789 8.903)>,  <POINT (-82.789 8.903)>, <POINT (-85.471 10.992)>,
 <POINT (-84.121 10.133)>, <POINT (-85.615 10.836)>, <POINT (-83.917 10.151)>,
  <POINT (-83.488 8.711)>,   <POINT (-83.591 8.48)>,   <POINT (-83.591 8.48)>,
 <POINT (-83.917 10.151)>,
 ...
 <POINT (-85.426 10.989)>,  <POINT (-83.787 9.763)>,  <POINT (-83.787 9.763)>,
  <POINT (-83.567 8.679)>,  <POINT (-82.836 8.949)>,  <POINT (-82.836 8.949)>,
  <POINT (-83.028 9.672)>,  <POINT (-83.028 9.672)>,  <POINT (-83.028 9.672)>,
 <POINT (-85.352 10.777)>]
Length: 11300, dtype: geometry
In [ ]:
obvs_gdf = gpd.GeoDataFrame(observaciones, geometry=obvs_points)
obvs_gdf
Out[ ]:
tribu genero especie rango_taxonomico fecha_inicio_recoleccion fecha_final_recoleccion identificador fecha_de_identificacion pais provincia ... elevacion_minima elevacion_maxima tipo_especimen tipo_nomenclatural tipo_registro categoria_especimen origen_especimen etapa_vida metodo_recolecta geometry
0 Atrophini Mnioes Mnioes hiles Especie 1989-04-01 1989-04-30 Gauld Ian 2005-08-19 Costa Rica Puntarenas ... 1239.0 1300.0 Organismo NaN NaN Individual NaN Adulto Desconocido POINT (-82.78875 8.90342)
1 Atrophini Mnioes Mnioes hiles Especie 1989-04-01 1989-04-30 Gauld Ian 2005-08-19 Costa Rica Puntarenas ... 1239.0 1300.0 Organismo NaN NaN Individual NaN Adulto Desconocido POINT (-82.78875 8.90342)
2 Atrophini Meniscomorpha Meniscomorpha helspina Especie 1987-05-01 1987-12-31 Gauld Ian 2005-05-26 Costa Rica Guanacaste ... 1100.0 1100.0 Organismo NaN NaN Individual NaN Adulto Desconocido POINT (-85.47065 10.99247)
3 Glyptini Zaglytomorpha NaN Genero 1990-03-03 1990-03-03 Godoy Carolina 2003-02-21 Costa Rica Heredia ... 2500.0 2500.0 NaN NaN NaN Individual NaN Adulto Desconocido POINT (-84.12113 10.13317)
4 Atrophini Mnioes Mnioes jucundus Especie 1990-07-19 1990-07-19 Gauld Ian 2005-08-24 Costa Rica Guanacaste ... 300.0 300.0 Organismo NaN NaN Individual NaN Adulto Manual POINT (-85.61549 10.83641)
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
11295 Atrophini Lissonota Lissonota pseudeleboea Especie 1992-03-01 1992-03-31 Gauld Ian 2005-05-19 Costa Rica Puntarenas ... 1500.0 1500.0 Organismo NaN NaN Individual NaN Adulto Desconocido POINT (-82.83644 8.94944)
11296 Atrophini Mnioes Mnioes nalbes Especie 1992-12-01 1992-12-31 Gauld Ian 2005-08-30 Costa Rica Limón ... 100.0 100.0 Organismo NaN NaN Individual NaN Adulto Desconocido POINT (-83.02770 9.67177)
11297 Atrophini Syzeuctus Syzeuctus vedoris Especie 1992-12-01 1992-12-31 Gauld Ian 2007-09-05 Costa Rica Limón ... 100.0 100.0 Organismo NaN NaN Individual NaN Adulto Desconocido POINT (-83.02770 9.67177)
11298 Atrophini Meniscomorpha Meniscomorpha xeresha Especie 1992-12-01 1992-12-31 Gauld Ian 2005-05-27 Costa Rica Limón ... 100.0 100.0 Organismo NaN NaN Individual NaN Adulto Desconocido POINT (-83.02770 9.67177)
11299 Atrophini Syzeuctus Syzeuctus hezonicus Especie 1993-02-09 1993-02-27 Gauld Ian 2007-09-06 Costa Rica Guanacaste ... 800.0 800.0 Organismo NaN NaN Individual NaN Adulto Desconocido POINT (-85.35191 10.77678)

11300 rows × 27 columns

In [ ]:
obvs_gdf.plot()
Out[ ]:
<Axes: >
No description has been provided for this image
In [ ]:
#Cargar el shapefile
shapefile = gpd.read_file('/content/drive/MyDrive/Colab Notebooks/Banchinae/CRI_adm1.shp')
print(shapefile.crs)

# Mostrar información básica sobre el shapefile
print(shapefile.head())

# Acceder a los datos del shapefile
geometria = shapefile.geometry
atributos = shapefile.drop('geometry', axis=1)
None
                                            geometry
0  POLYGON ((-84.67788 11.07885, -84.60770 11.038...
1  POLYGON ((-83.81220 10.08073, -83.78162 10.063...
2  MULTIPOLYGON (((-85.51458 9.85958, -85.51458 9...
3  POLYGON ((-84.01901 10.78329, -84.01370 10.775...
4  MULTIPOLYGON (((-82.61597 9.63208, -82.61597 9...
In [ ]:
# Plot del shapefile
fig, ax = plt.subplots(figsize=(15, 15))
shapefile.plot(ax=ax, color="lightgreen", edgecolor="black", linewidth=0.6)

# Plot de los puntos de obvs_gdf
obvs_gdf.plot(ax=ax, color="blue")

# Etiquetas
ax.set_title("Especímenes de Banchinae recolectados por provincia, Costa Rica")
ax.set_xlabel("Longitud")
ax.set_ylabel("Latitud")

#Se define el formato de los etiquetas.
ax.set_xticks([tick for tick in ax.get_xticks() if tick % 5 == 0])
ax.set_yticks([tick for tick in ax.get_yticks() if tick % 5 == 0])

#Se define el formato de los etiquetas.
ax.set_xticks([tick for tick in ax.get_xticks() if tick % 1 == 0], minor=True)
ax.set_yticks([tick for tick in ax.get_yticks() if tick % 1 == 0], minor=True)

# Show the plot
plt.show()
No description has been provided for this image

Descripción de los resultados obtenidos¶

Los datos digitalizados a partir de los especímenes de avispas parasíticas de la subfamilia Banchinae (Hymenoptera: Ichneumonidae) en las colecciones biológicas depositadas en el Museo Nacional de Costa Rica (https://biodiversidad.museocostarica.go.cr/) representan 11 300 especímenes. Aunque la base de datos contine 51 variable (columnas), algunas de estas no aplican a la colección en estudio por estar asociadas con colecciones como Plantas y Hongos. En este análisis se utilizaron inicialmente 26 variables (columnas).

La colección está representada por 4 tribus, 25 géneros y 217 especies. De los 11 300 especímenes, 1 607 están identificados a subfamilia, 549 a género y 9 144 a especie. La tribu con mayor cantidad de especímenes es Atrophini (77.8 %), el género más abundante es Mnioes (40.78 %) y la especie más abundante es Mnioes jucundus (26.1 %).

La mayoría de los especímenes se recolectaron en la provincia de Guanacaste (4 892), en el área de conservación del mismo nombre. La mayoría de los especímenes se recolectaron entre 1985 y 1995.

El Dr. IanGuald (q.d.D.g.), especialista de la familia Ichneumonidae y que laboró para el Natural History Museum, Londres, identificó 9.126 especímenes.

La colección contiene 76 holotipos y 601 paratipos.

El método de recolecta más frecuente fue la Trampa de Malaise (4 454 especímenes) y 4 185 especímenes meustran para etsa variable el valor de desconocido.

Las variables “categoria_especimen” y “origen_especimen” tiene el mismo valor para todos los especímenes. Las variables “vertiente” y “tipo_registro” no contienen información. La variable “área_protegida” contiene un valor erróneo porque consigna el valor como Adulto.

Un parte importante de las correlaciones se deben a sistemas jerárquicos de la información, tales como la división política-administrativa y la jerarquía taxonómica.

Conclusiones¶

La colección de avispas parasíticas de la subfamilia Banchinae en el Museo Nacional de Costa Rica es una de las más grandes de América Latina, con 11 300 especímenes representando 4 tribus, 25 géneros y 217 especies. Esta colección constituye un recurso invaluable para estudios taxonómicos, biogeográficos y de diversidad de esta subfamilia en la región.

La mayoría de los especímenes fueron recolectados entre 1985 y 1995, un período de alta actividad entomológica en la región. Esta información histórica es valiosa para estudios comparativos y de cambios temporales en la biodiversidad.

El método de recolecta más utilizado fue la trampa de Malaise, lo que indica que esta técnica ha sido efectiva para el muestreo de estas avispas parasíticas. Sin embargo, una gran cantidad de especímenes carecen de información sobre el método de recolecta, lo que limita las posibilidades de análisis comparativos entre diferentes técnicas de muestreo.

La mayoría de los especímenes se recolectaron en la provincia de Guanacaste, particularmente en el área de conservación del mismo nombre. Esto indica una mayor actividad de recolección en esta región o una mayor abundancia de la subfamilia Banchinae en esta área.

Tanto para el caso de la variable "vertiente" como para el de "area_protegida" se puede desarrollar un trabajo, con los shapefile adecuados, para determinar el valor de esta variables para cada espécimen con base en las coordenadas reportadas.

De igual forma, se pueden desarrollo modelo de nicho potencial o desplazamiento potencial debido al cambio climático o a la variabilidad climática, y los respectivos movimientos potenciales feura o dento de áreas protegidas.

Referencias¶

Angulo, Y. (27 de marzo mar 2015). Museo Nacional asumió segunda colección biológica más grande de América Latina. elmundo.cr. https://elmundo.cr/costa-rica/museo-nacional-asumio-segunda-coleccion-biologica-mas-grande-de-america-latina/

Alvarado, J. (27 de maro 21015). Desde este viernes la colección biológica del INBio está bajo la custodia Museo Nacional. Crhoy.com. https://archivo.crhoy.com/desde-este-viernes-la-coleccion-biologica-del-inbio-esta-bajo-la-custodia-museo-nacional/nacionales/

Borja-Acosta, K. G., Noguera-Urbano, E. A., Acevedo-Charry, O., Cifuentes, S., Diaz, A. y DoNascimiento, C. (2020). Uso de las colecciones biológicas como una herramienta para la gestión del territorio. Instituto Humbold. http://reporte.humboldt.org.co/biodiversidad/2020/cap1/104/#seccion1

Castillo, M., Michán, L. y Martínez, A. L. (2014). La biocuración en biodiversidad: proceso, aciertos, errores, soluciones y perspectivas. Acta Botánica Mexicana 108, 81-103. https://www.scielo.org.mx/pdf/abm/n108/n108a6.pdf#:~:text=Se%20expone%20la%20importancia%20de%20la%20biocuraci%C3%B3n%20de,la%20biocuraci%C3%B3n%20para%20los%20bi%C3%B3logos%20del%20siglo%20XXI.

CRBio (s. f.). Desarrollos. Desarrollo e Implementación de Tecnología. Centro de Investigación en Informática de la Biodiversidad (CRBio). https://cribio.github.io/developments/

Darrigran, G. (2012). Las Colecciones Biológicas: ¿para qué? Boletín Biológica, 6(23), 28-31. http://sedici.unlp.edu.ar/bitstream/handle/10915/100508/Documento_completo.pdf-PDFA.pdf?sequence=1&isAllowed=y

Gauld, I.D., & Ugalde-Gómez, J.A. (2002). The Ichneumonidae of Costa Rica, 4. Subfamily Banchini: tribu Banchini. Memoirs of the American Entomological Institute, 66, 271-306.

Godoy, C & Gauld, I.D. (2002). The Ichneumonidae of Costa Rica, 4. Subfamily Banchini: tribu Glyptini. Memoirs of the American Entomological Institute, 66, 666-743.

Luna Plascencia, R., Castañon Barrientos, A. y Raz-Guzmán, A. (2011). La biodiversidad en México: su conservación y las colecciones biológicas. Ciencias, 101, 36-43. https://www.redalyc.org/pdf/644/64419046005.pdf

Mesa Ramírez D. P. y Bernal, A. A. (2005). Protocolos para la preservación y manejo de colecciones biológicas. Boletín Científico, 10, 117-148. https://repositorio.fedepalma.org/bitstream/handle/123456789/141519/Protocolo_Conservacion_manejo_colecciones_biologicas.pdf?sequence=1

Mora, M. A. y Vargas, M. (2017). El Atlas de la Biodiversidad de Costa Rica (CRBio). Primer Encuentro Latinoamericano de eCiencia, San José, del 3 al 5 de julio de 2017. https://documentos.redclara.net/bitstream/10786/1295/1/El%20Atlas%20de%20la%20Biodiversidad%20de%20Costa%20Rica.pdf

Mora. M. A. (s. f.). El sistema de información “Atta”. https://www.gbif.es/wp-content/uploads/2010/11/IntroduccionAtta.pdf

Soto, M. (27 de marzo 2015). INBio traspasa colecciones biológicas al Museo Nacional. La Nación. https://www.nacion.com/ciencia/medio-ambiente/inbio-traspasa-colecciones-biologicas-al-museo-nacional/2PGJVBYUAVCSPENVBBDTUPMN3I/story/

Ugalde-Gómez, J.A., & Gauld, I.D. (2002). The Ichneumonidae of Costa Rica, 4. Subfamily Banchini: tribu Atrophini. Memoirs of the American Entomological Institute, 66, 306-666.