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
!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
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)¶
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.
# 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
# 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]
# Ver los primeros 10 datos del DataFrame
df.head(10)
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
# Ver últimos 10 datos del DataFram
df.tail(10)
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
# Ver los primeros 10 datos de una columna especifica
df['especie'].head(10)
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¶
# Cantidad de datos no nulos en cada columna
df.count()
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.
#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)
# 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
# Cantidad de datos repetidos en una columna
df['especie'].value_counts()
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
# Datos faltantes
condicion = df['identificador'].isna()
df[condicion]
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
# 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'>
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
# datos nulos
condicion = df['tipo_especimen'].isna()
df[condicion]
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
# cambiar datos Nulos con un valor único
fixed = df[condicion].fillna("No asignado")
fixed
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¶
# 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
# 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
# Calcular el número de especies.
total_specie = df['especie'].nunique()
# Imprimir el resultado
print(f"Total species: {total_specie}")
Total species: 217
#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
# 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()
#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
# 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()
#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
# 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)
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).
# CSV coordenadas de registros de especies
observaciones = pd.read_csv("/content/drive/MyDrive/Colab Notebooks/Banchinae/Banchinae_BDMNCR_28may2024.csv")
observaciones
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
# Convertir las coordenadas a POINTS
obvs_points = gpd.points_from_xy(observaciones.longitud_decimal, observaciones.latitud_decimal)
obvs_points
<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
obvs_gdf = gpd.GeoDataFrame(observaciones, geometry=obvs_points)
obvs_gdf
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
obvs_gdf.plot()
<Axes: >
#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...
# 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()
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.