PROYECTO: Análisis de la Distribución de Especies del Género Quercus en Guatemala

Por: María Fernanda López López


Descripción del proyecto:

Este proyecto se centra en analizar la distribución de las especies del género Quercus en Guatemala, empleando datos del Herbario de la Universidad de San Carlos de Guatemala (USCG). El análisis se enfoca en verificar que todas las especies en el conjunto de datos pertenecen al género Quercus, asegurando la precisión y homogeneidad de los datos. Se incluye la distribución geográfica de las especies en diversas provincias de Guatemala, utilizando herramientas de visualización de datos para identificar patrones de distribución. Además, se cuantifican las observaciones de cada especie, permitiendo identificar las especies más comunes y aquellas menos frecuentes. El análisis temporal de las observaciones ayuda a identificar fluctuaciones y tendencias a lo largo de los años, influenciadas por factores como cambios en los esfuerzos de recolección de datos, variaciones naturales en las poblaciones o efectos del cambio climático.

El objetivo principal del proyecto es proporcionar una comprensión detallada de la distribución de las especies del Género Quercus en Guatemala, basada en datos del Herbario USCG. Este análisis apoya futuras investigaciones, esfuerzos de conservación y políticas de manejo sostenible, contribuyendo a la protección y uso racional de estos recursos naturales. Además, destaca la importancia del Herbario USCG como una fuente crítica de datos botánicos, relevante tanto para la ciencia botánica como para la gestión ambiental y la toma de decisiones informadas sobre los ecosistemas de Guatemala. La información obtenida a través de este análisis es esencial para apoyar la conservación y manejo de los recursos naturales, y este proyecto demuestra cómo Python puede ser una herramienta poderosa en la ciencia de datos aplicada a la botánica.

Justificación:

El género Quercus es de gran importancia ecológica y económica en Guatemala. Estos árboles son fundamentales en muchos ecosistemas, proporcionando hábitats para diversas especies y contribuyendo a la biodiversidad. Además, los robles tienen un valor significativo en la industria maderera y en la producción de productos derivados. La madera de Quercus es apreciada por su calidad y durabilidad, utilizada en construcción y carpintería.

El Herbario de la Universidad de San Carlos de Guatemala es una fuente invaluable de datos botánicos históricos y actuales. El análisis de estos datos permite entender mejor la distribución y las características de las especies de Quercus en Guatemala, lo cual es crucial para su conservación y manejo sostenible. Además, la información puede ser útil para políticas de reforestación y restauración de bosques, contribuyendo a la mitigación del cambio climático y la conservación de la biodiversidad en el país.


Antecedentes

El género Quercus es crucial tanto ecológica como económicamente en Guatemala. Estos árboles son componentes estructurales fundamentales de muchos bosques guatemaltecos, proporcionando hábitats para diversas especies y contribuyendo a la biodiversidad. Además, los Quercus tienen un valor significativo en la industria maderera debido a la calidad y durabilidad de su madera, utilizada en construcción y carpintería (Consejo Nacional de Áreas Protegidas [CONAP], 2019).

-Distribución Geográfica

La distribución de las especies de Quercus en Guatemala ha sido objeto de diversos estudios, aunque aún se necesita más información detallada. Estudios anteriores han revelado que las especies de encino están presentes en una variedad de ecosistemas, desde zonas cálidas y secas hasta selvas lluviosas, y presentan un alto grado de endemismo y numerosas interacciones ecológicas (Standley & Steyermark, 1952; Rodríguez-Correa et al., 2015; Nixon, 2006). Sin embargo, en regiones como Alta Verapaz, Baja Verapaz y Petén, la riqueza y distribución de estas especies no ha sido completamente documentada, lo cual es evidente en los bajos números de registros y las ampliaciones de distribución reportadas (Cano & Schuster, 2020).

-Esfuerzos de Conservación y Amenazas

El Consejo Nacional de Áreas Protegidas (CONAP) ha identificado 22 de las 26 especies de Quercus en Guatemala como amenazadas, subrayando la necesidad de esfuerzos de conservación (CONAP, 2019). La falta de información sobre estas especies en algunos departamentos limita las acciones para su manejo y conservación, lo cual es crítico dado su papel ecológico y económico (Cano & Schuster, 2020).

-Aplicación de la Ciencia de Datos en Estudios Botánicos

Un artículo reciente propone un nuevo modelo orientado por objetos para bases de datos botánicos, diseñado para integrar los paradigmas de trabajo en la Botánica, como los taxones y los especímenes, junto con su información textual y gráfica (Besembel et al. 2015, Año). Este modelo ofrece una estructura más completa y flexible para la gestión de la información botánica, incorporando principios de ciencia de datos para una solución más robusta y eficiente en el manejo de datos botánicos. Su aplicación podría contribuir significativamente a la comprensión y conservación de especies como las de Quercus en Guatemala.


Descripción del Problema:

El problema principal de este proyecto es la necesidad de comprender la distribución de las especies del género Quercus, cuya información, aunque crucial, está dispersa y no sistematizada, dificultando su análisis y uso en la toma de decisiones de conservación y manejo. En regiones del país la riqueza y distribución de estas especies no ha sido completamente documentada, limitando los esfuerzos de conservación a pesar de que 22 de las 26 especies de Quercus en Guatemala están clasificadas como amenazadas. Este desafío es significativo dado el papel ecológico y económico de los Quercus en Guatemala, donde estos árboles son componentes estructurales de muchos bosques y tienen un alto valor en la industria maderera.

Objetivo:

El objetivo del proyecto es realizar un análisis exhaustivo de las especies de Quercus presentes en el conjunto de datos, incluyendo la verificación de que todas las especies pertenecen al género Quercus, un análisis de su distribución geográfica, visualización de la cantidad de observaciones por especie, estudio de tendencias temporales en las observaciones, y la generación de visualizaciones que faciliten la comprensión de los datos y la identificación de patrones significativos.


Descripción del Conjunto de Datos

El Herbario de la Universidad de San Carlos de Guatemala (USCG), creado en 1923 por el botánico guatemalteco Ulises Rojas, es el más antiguo del país. Este herbario contiene más de 47,000 especímenes provenientes de Guatemala, organizados en 273 familias, 1,959 géneros y 6,842 especies que incluyen hepáticas, musgos, helechos, plantas vasculares, líquenes y macrohongos.

El conjunto de datos descargado en formato CSV contiene 8,645 registros de ocurrencias, proporcionando una valiosa fuente de información sobre la diversidad y distribución de la flora guatemalteca.

-Fuente de Datos El archivo de datos fue descargado del Global Biodiversity Information Facility (GBIF) a través del siguiente enlace: https://doi.org/10.15468/dl.vpgt9k.

-Referencia Formal Centro de Estudios Conservacionistas (CECON), Universidad de San Carlos de Guatemala (USAC) (2024). USAC, CECON, Herbario USCG. Conjunto de datos de ocurrencias https://doi.org/10.15468/p5uq7x, accedido a través de GBIF.org el 2024-06-05.


Procesamiento y visualización de los datos

In [ ]:
# Importa pandas
import pandas as pd

# Importa el módulo para subir archivos
from google.colab import files

# Sube el archivo desde tu ordenador
uploaded = files.upload()

# Verifica que el archivo se ha subido correctamente
if uploaded:
    for file_name in uploaded.keys():
        print('Archivo subido con éxito:', file_name)
        file_path = '/content/' + file_name

    # Intentar leer el archivo CSV con diferentes delimitadores
    try:
        df = pd.read_csv(file_path)
        print("Archivo leído con delimitador por defecto (coma):")
    except pd.errors.ParserError:
        try:
            df = pd.read_csv(file_path, delimiter=';')
            print("Archivo leído con delimitador punto y coma:")
        except pd.errors.ParserError:
            try:
                df = pd.read_csv(file_path, delimiter='\t')
                print("Archivo leído con delimitador tabulación:")
            except pd.errors.ParserError:
                print("No se pudo leer el archivo con los delimitadores estándar (coma, punto y coma, tabulación).")

    # Muestra las primeras filas del DataFrame si se ha leído correctamente
    if 'df' in locals():
        print(df.head())
else:
    print("No se ha subido ningún archivo.")
Upload widget is only available when the cell has been executed in the current browser session. Please rerun this cell to enable.
Saving 0027876-240506114902167.csv to 0027876-240506114902167.csv
Archivo subido con éxito: 0027876-240506114902167.csv
Archivo leído con delimitador tabulación:
       gbifID                            datasetKey  \
0  4862946367  d5ba665a-c07b-4379-85ff-15d7e3a9331a   
1  4862946366  d5ba665a-c07b-4379-85ff-15d7e3a9331a   
2  4862946365  d5ba665a-c07b-4379-85ff-15d7e3a9331a   
3  4862946364  d5ba665a-c07b-4379-85ff-15d7e3a9331a   
4  4862946363  d5ba665a-c07b-4379-85ff-15d7e3a9331a   

                           occurrenceID  kingdom        phylum          class  \
0  6068932f-f455-4e43-ba7c-88cabb959a87  Plantae  Tracheophyta  Magnoliopsida   
1  a8a37bee-ec33-420a-bf6b-8f9d2239287a  Plantae  Tracheophyta  Magnoliopsida   
2  c68d4b91-d3ba-41e7-adbf-82ef6591e75c  Plantae  Tracheophyta  Magnoliopsida   
3  023f3b89-8305-4744-8945-2d38cbc9624e  Plantae  Tracheophyta  Magnoliopsida   
4  c9a71ef8-e84f-44d3-9cc9-12f417b0ee45  Plantae  Tracheophyta  Magnoliopsida   

     order    family    genus              species  ... identifiedBy  \
0  Fagales  Fagaceae  Quercus  Quercus sapotifolia  ...  A Molina R.   
1  Fagales  Fagaceae  Quercus  Quercus sapotifolia  ...  S. Valencia   
2  Fagales  Fagaceae  Quercus  Quercus sapotifolia  ...   J. Morales   
3  Fagales  Fagaceae  Quercus  Quercus sapotifolia  ...  S. Valencia   
4  Fagales  Fagaceae  Quercus  Quercus sapotifolia  ...     R. Ávila   

        dateIdentified       license rightsHolder  \
0  1964-01-01T00:00:00  CC_BY_NC_4_0          NaN   
1                  NaN  CC_BY_NC_4_0          NaN   
2  2008-01-01T00:00:00  CC_BY_NC_4_0          NaN   
3                  NaN  CC_BY_NC_4_0          NaN   
4  2007-01-01T00:00:00  CC_BY_NC_4_0          NaN   

                                        recordedBy typeStatus  \
0           Antonio Molina R.; Albertina R. Molina        NaN   
1                                         M. Pérez        NaN   
2                                        R. Luarca        NaN   
3                                      Y. Guerrero        NaN   
4  M. Pérez; R. Ávila, Don Eleutorio, Don Oliverio        NaN   

  establishmentMeans           lastInterpreted mediaType  \
0                NaN  2024-05-18T22:27:01.620Z       NaN   
1                NaN  2024-05-18T22:27:01.624Z       NaN   
2                NaN  2024-05-18T22:27:01.619Z       NaN   
3                NaN  2024-05-18T22:27:01.615Z       NaN   
4                NaN  2024-05-18T22:27:01.614Z       NaN   

                                               issue  
0  CONTINENT_DERIVED_FROM_COUNTRY;TAXON_MATCH_TAX...  
1  CONTINENT_DERIVED_FROM_COORDINATES;TAXON_MATCH...  
2  CONTINENT_DERIVED_FROM_COORDINATES;TAXON_MATCH...  
3  CONTINENT_DERIVED_FROM_COUNTRY;TAXON_MATCH_TAX...  
4  CONTINENT_DERIVED_FROM_COORDINATES;TAXON_MATCH...  

[5 rows x 50 columns]

Verificar si todas las especies pertenecen al género Quercus:

In [ ]:
import pandas as pd

# Suponiendo que unique_species es una lista de especies
unique_species = ['Quercus alba', 'Quercus robur', 'Acer palmatum', 'Quercus cerris', 'Quercus suber']

# Verificar si todas las especies pertenecen al género Quercus
all_quercus = all(species.startswith('Quercus') for species in unique_species if pd.notnull(species))

# Mostrar las especies únicas y si todas pertenecen a Quercus
print("Especies únicas:", unique_species)
print("Todas las especies pertenecen al género Quercus:", all_quercus)
Especies únicas: ['Quercus alba', 'Quercus robur', 'Acer palmatum', 'Quercus cerris', 'Quercus suber']
Todas las especies pertenecen al género Quercus: False

Filtramos el DataFrame para conservar solo las filas donde la especie pertenece al género Quercus.

In [ ]:
# Filtrar el DataFrame para conservar solo las filas donde la especie pertenece al género Quercus
quercus_data = df[df['species'].str.startswith('Quercus', na=False)]

# Mostrar las primeras filas del DataFrame filtrado
print(quercus_data.head())
       gbifID                            datasetKey  \
0  4862946367  d5ba665a-c07b-4379-85ff-15d7e3a9331a   
1  4862946366  d5ba665a-c07b-4379-85ff-15d7e3a9331a   
2  4862946365  d5ba665a-c07b-4379-85ff-15d7e3a9331a   
3  4862946364  d5ba665a-c07b-4379-85ff-15d7e3a9331a   
4  4862946363  d5ba665a-c07b-4379-85ff-15d7e3a9331a   

                           occurrenceID  kingdom        phylum          class  \
0  6068932f-f455-4e43-ba7c-88cabb959a87  Plantae  Tracheophyta  Magnoliopsida   
1  a8a37bee-ec33-420a-bf6b-8f9d2239287a  Plantae  Tracheophyta  Magnoliopsida   
2  c68d4b91-d3ba-41e7-adbf-82ef6591e75c  Plantae  Tracheophyta  Magnoliopsida   
3  023f3b89-8305-4744-8945-2d38cbc9624e  Plantae  Tracheophyta  Magnoliopsida   
4  c9a71ef8-e84f-44d3-9cc9-12f417b0ee45  Plantae  Tracheophyta  Magnoliopsida   

     order    family    genus              species  ... identifiedBy  \
0  Fagales  Fagaceae  Quercus  Quercus sapotifolia  ...  A Molina R.   
1  Fagales  Fagaceae  Quercus  Quercus sapotifolia  ...  S. Valencia   
2  Fagales  Fagaceae  Quercus  Quercus sapotifolia  ...   J. Morales   
3  Fagales  Fagaceae  Quercus  Quercus sapotifolia  ...  S. Valencia   
4  Fagales  Fagaceae  Quercus  Quercus sapotifolia  ...     R. Ávila   

        dateIdentified       license rightsHolder  \
0  1964-01-01T00:00:00  CC_BY_NC_4_0          NaN   
1                  NaN  CC_BY_NC_4_0          NaN   
2  2008-01-01T00:00:00  CC_BY_NC_4_0          NaN   
3                  NaN  CC_BY_NC_4_0          NaN   
4  2007-01-01T00:00:00  CC_BY_NC_4_0          NaN   

                                        recordedBy typeStatus  \
0           Antonio Molina R.; Albertina R. Molina        NaN   
1                                         M. Pérez        NaN   
2                                        R. Luarca        NaN   
3                                      Y. Guerrero        NaN   
4  M. Pérez; R. Ávila, Don Eleutorio, Don Oliverio        NaN   

  establishmentMeans           lastInterpreted mediaType  \
0                NaN  2024-05-18T22:27:01.620Z       NaN   
1                NaN  2024-05-18T22:27:01.624Z       NaN   
2                NaN  2024-05-18T22:27:01.619Z       NaN   
3                NaN  2024-05-18T22:27:01.615Z       NaN   
4                NaN  2024-05-18T22:27:01.614Z       NaN   

                                               issue  
0  CONTINENT_DERIVED_FROM_COUNTRY;TAXON_MATCH_TAX...  
1  CONTINENT_DERIVED_FROM_COORDINATES;TAXON_MATCH...  
2  CONTINENT_DERIVED_FROM_COORDINATES;TAXON_MATCH...  
3  CONTINENT_DERIVED_FROM_COUNTRY;TAXON_MATCH_TAX...  
4  CONTINENT_DERIVED_FROM_COORDINATES;TAXON_MATCH...  

[5 rows x 50 columns]

Informe de análisis exploratorio específico para Quercus

In [ ]:
!pip uninstall -y pandas-profiling pydantic
WARNING: Skipping pandas-profiling as it is not installed.
Found existing installation: pydantic 2.7.2
Uninstalling pydantic-2.7.2:
  Successfully uninstalled pydantic-2.7.2
In [ ]:
!pip install ydata-profiling
Collecting ydata-profiling
  Downloading ydata_profiling-4.8.3-py2.py3-none-any.whl (359 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 359.5/359.5 kB 2.9 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)
Collecting pydantic>=2 (from ydata-profiling)
  Downloading pydantic-2.7.3-py3-none-any.whl (409 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 409.6/409.6 kB 4.4 MB/s eta 0:00:00
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 8.5 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 5.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 9.9 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)
Collecting pydantic-core==2.18.4 (from pydantic>=2->ydata-profiling)
  Downloading pydantic_core-2.18.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.0 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.0/2.0 MB 14.2 MB/s eta 0:00:00
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=d7bf0dcae353c6ad990f09a8bc63a6f65406064c4a576f1356e00b37ecbe620c
  Stored in directory: /root/.cache/pip/wheels/dd/91/29/a79cecb328d01739e64017b6fb9a1ab9d8cb1853098ec5966d
Successfully built htmlmin
Installing collected packages: htmlmin, typeguard, pydantic-core, multimethod, dacite, pydantic, imagehash, visions, phik, ydata-profiling
  Attempting uninstall: pydantic-core
    Found existing installation: pydantic_core 2.18.3
    Uninstalling pydantic_core-2.18.3:
      Successfully uninstalled pydantic_core-2.18.3
Successfully installed dacite-1.8.1 htmlmin-0.1.12 imagehash-4.3.1 multimethod-1.11.2 phik-0.12.4 pydantic-2.7.3 pydantic-core-2.18.4 typeguard-4.3.0 visions-0.7.6 ydata-profiling-4.8.3
In [ ]:
from ydata_profiling import ProfileReport

# Perfil
profile_quercus = ProfileReport(quercus_data, title="Informe Exploratorio para Quercus")
profile_quercus.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]

Gráficos para análisis de información

Gráfico para observar el número de especies por provincia:

In [ ]:
import seaborn as sns
import matplotlib.pyplot as plt

# Contar el número total de especies por provincia
species_count_per_province = quercus_data['stateProvince'].value_counts().reset_index()
species_count_per_province.columns = ['stateProvince', 'species_count']

# Configurar el estilo de Seaborn
sns.set(style="whitegrid")

# Crear el gráfico de barras horizontal
plt.figure(figsize=(10, 6))
sns.barplot(x='species_count', y='stateProvince', data=species_count_per_province, palette="husl")
plt.title("Número de especies por provincia")
plt.xlabel("Número de especies")
plt.ylabel("Provincia")
plt.show()
<ipython-input-23-1fb4834d49fc>:13: FutureWarning: 

Passing `palette` without assigning `hue` is deprecated and will be removed in v0.14.0. Assign the `y` variable to `hue` and set `legend=False` for the same effect.

  sns.barplot(x='species_count', y='stateProvince', data=species_count_per_province, palette="husl")
No description has been provided for this image

En este caso podemos obervar que la provincia con más registros es Quiché por mucho más

Visualización de la cantidad de observaciones por Especie

In [ ]:
#Cantidad de Observaciones por Especie de Quercus

plt.figure(figsize=(15, 8))
quercus_counts = quercus_data['species'].value_counts().head(20)  # Mostramos las 20 especies más comunes
sns.barplot(y=quercus_counts.index, x=quercus_counts.values, palette='viridis')
plt.title('Cantidad de Observaciones por Especie de Quercus (Top 20)')
plt.xlabel('Cantidad de Observaciones')
plt.ylabel('Especie de Quercus')
plt.show()
<ipython-input-19-083046583055>:5: FutureWarning: 

Passing `palette` without assigning `hue` is deprecated and will be removed in v0.14.0. Assign the `y` variable to `hue` and set `legend=False` for the same effect.

  sns.barplot(y=quercus_counts.index, x=quercus_counts.values, palette='viridis')
No description has been provided for this image

En este caso podemos ver que la especie con más observaciones es Quercus peduncularis

Diagrama de dispersión de latitud y longitud para la especie con mas observaciones: Quercus peduncularis

In [ ]:
import matplotlib.pyplot as plt

# Filtrar el DataFrame para incluir solo las filas donde la especie es Quercus peduncularis
quercus_peduncularis_data = quercus_data[quercus_data['species'] == 'Quercus peduncularis']

# Crear el diagrama de dispersión de latitud y longitud
plt.figure(figsize=(10, 8))
plt.scatter(quercus_peduncularis_data['decimalLongitude'], quercus_peduncularis_data['decimalLatitude'], alpha=0.5)
plt.title('Diagrama de Dispersión de Latitud y Longitud para Quercus peduncularis')
plt.xlabel('Longitud')
plt.ylabel('Latitud')
plt.grid(True)
plt.show()
No description has been provided for this image

Análisis de Tendencias Temporales para Especies de Quercus

In [ ]:
quercus_data['year'] = pd.to_datetime(quercus_data['eventDate'], errors='coerce').dt.year

plt.figure(figsize=(12, 6))
sns.countplot(x='year', data=quercus_data, palette='viridis')
plt.title('Distribución de Observaciones por Año de Especies de Quercus')
plt.xlabel('Año')
plt.ylabel('Cantidad de Observaciones')
plt.xticks(rotation=90)
plt.show()
<ipython-input-20-d2d1938bd391>:1: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  quercus_data['year'] = pd.to_datetime(quercus_data['eventDate'], errors='coerce').dt.year
<ipython-input-20-d2d1938bd391>:4: FutureWarning: 

Passing `palette` without assigning `hue` is deprecated and will be removed in v0.14.0. Assign the `x` variable to `hue` and set `legend=False` for the same effect.

  sns.countplot(x='year', data=quercus_data, palette='viridis')
No description has been provided for this image

Podemos obervar que a lo largo de los años no se obtuvo varias obersaciones, hasta que en el año 2015 empezo a aumentar, esto puede ser debido a que se empezo a estudiar con mayor profundidad este género

Conclusiones:

-Las visualizaciones mostraron que las especies de Quercus en Guatemala están distribuidas en varias provincias. Esta variabilidad geográfica indica diferentes adaptaciones ecológicas y la influencia de diversas condiciones ambientales en la distribución de estas especies.

-Los gráficos revelaron que ciertas especies de Quercus son más comunes que otras en Guatemala. Un pequeño número de especies dominan en términos de cantidad de observaciones, lo que puede reflejar tanto una mayor abundancia de estas especies como una mayor facilidad de identificación por parte de los investigadores.

-El análisis temporal a través de gráficos mostró fluctuaciones en las observaciones de Quercus a lo largo de los años. Estas fluctuaciones pueden estar relacionadas con cambios en los esfuerzos de recolección de datos, variaciones naturales en las poblaciones de Quercus o efectos del cambio climático, así como con eventos específicos de conservación o reforestación en el país.

-Los gráficos subrayan la importancia de conservar las especies de Quercus en Guatemala debido a su papel ecológico y económico. La visualización de datos facilita la identificación de patrones y tendencias, lo que es crucial para guiar esfuerzos de conservación, políticas de manejo sostenible y programas de reforestación, contribuyendo al bienestar ecológico y económico del país.

Referencias:

  • Cano, E. B., & Schuster, J. C. (2020). Contribución al conocimiento de los encinos (Quercus: Fagaceae) en los departamentos de Alta Verapaz, Baja Verapaz y Petén, Guatemala. Publicación del Consejo Nacional de Áreas Protegidas (Conap).

  • Consejo Nacional de Áreas Protegidas (Conap). (2019). Informe sobre las especies amenazadas de Guatemala.

  • Nixon, K. C. (2006). Global and neotropical distribution of oak species. Botanical Journal of the Linnean Society, 152(2), 211-230.

  • Standley, P. C., & Steyermark, J. A. (1952). Flora of Guatemala. Fieldiana: Botany, 24.