# Paso 1: Instalación de dependencias necesarias
!pip install pygbif pandas geopandas rasterio folium matplotlib seaborn
Collecting pygbif Downloading pygbif-0.6.5-py3-none-any.whl.metadata (12 kB) Requirement already satisfied: pandas in /usr/local/lib/python3.11/dist-packages (2.2.2) Requirement already satisfied: geopandas in /usr/local/lib/python3.11/dist-packages (1.0.1) Collecting rasterio Downloading rasterio-1.4.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (9.1 kB) Requirement already satisfied: folium in /usr/local/lib/python3.11/dist-packages (0.19.5) Requirement already satisfied: matplotlib in /usr/local/lib/python3.11/dist-packages (3.10.0) Requirement already satisfied: seaborn in /usr/local/lib/python3.11/dist-packages (0.13.2) Requirement already satisfied: requests>2.7 in /usr/local/lib/python3.11/dist-packages (from pygbif) (2.32.3) Collecting requests-cache (from pygbif) Downloading requests_cache-1.2.1-py3-none-any.whl.metadata (9.9 kB) Collecting geojson_rewind (from pygbif) Downloading geojson_rewind-1.1.0-py3-none-any.whl.metadata (4.5 kB) Collecting geomet (from pygbif) Downloading geomet-1.1.0-py3-none-any.whl.metadata (11 kB) Collecting appdirs>=1.4.3 (from pygbif) Downloading appdirs-1.4.4-py2.py3-none-any.whl.metadata (9.0 kB) Requirement already satisfied: numpy>=1.23.2 in /usr/local/lib/python3.11/dist-packages (from pandas) (1.26.4) Requirement already satisfied: python-dateutil>=2.8.2 in /usr/local/lib/python3.11/dist-packages (from pandas) (2.8.2) Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.11/dist-packages (from pandas) (2025.1) Requirement already satisfied: tzdata>=2022.7 in /usr/local/lib/python3.11/dist-packages (from pandas) (2025.1) Requirement already satisfied: pyogrio>=0.7.2 in /usr/local/lib/python3.11/dist-packages (from geopandas) (0.10.0) Requirement already satisfied: packaging in /usr/local/lib/python3.11/dist-packages (from geopandas) (24.2) Requirement already satisfied: pyproj>=3.3.0 in /usr/local/lib/python3.11/dist-packages (from geopandas) (3.7.1) Requirement already satisfied: shapely>=2.0.0 in /usr/local/lib/python3.11/dist-packages (from geopandas) (2.0.7) Collecting affine (from rasterio) Downloading affine-2.4.0-py3-none-any.whl.metadata (4.0 kB) Requirement already satisfied: attrs in /usr/local/lib/python3.11/dist-packages (from rasterio) (25.2.0) Requirement already satisfied: certifi in /usr/local/lib/python3.11/dist-packages (from rasterio) (2025.1.31) Requirement already satisfied: click>=4.0 in /usr/local/lib/python3.11/dist-packages (from rasterio) (8.1.8) Collecting cligj>=0.5 (from rasterio) Downloading cligj-0.7.2-py3-none-any.whl.metadata (5.0 kB) Collecting click-plugins (from rasterio) Downloading click_plugins-1.1.1-py2.py3-none-any.whl.metadata (6.4 kB) Requirement already satisfied: pyparsing in /usr/local/lib/python3.11/dist-packages (from rasterio) (3.2.1) Requirement already satisfied: branca>=0.6.0 in /usr/local/lib/python3.11/dist-packages (from folium) (0.8.1) Requirement already satisfied: jinja2>=2.9 in /usr/local/lib/python3.11/dist-packages (from folium) (3.1.6) Requirement already satisfied: xyzservices in /usr/local/lib/python3.11/dist-packages (from folium) (2025.1.0) Requirement already satisfied: contourpy>=1.0.1 in /usr/local/lib/python3.11/dist-packages (from matplotlib) (1.3.1) Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.11/dist-packages (from matplotlib) (0.12.1) Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.11/dist-packages (from matplotlib) (4.56.0) Requirement already satisfied: kiwisolver>=1.3.1 in /usr/local/lib/python3.11/dist-packages (from matplotlib) (1.4.8) Requirement already satisfied: pillow>=8 in /usr/local/lib/python3.11/dist-packages (from matplotlib) (11.1.0) Requirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.11/dist-packages (from jinja2>=2.9->folium) (3.0.2) Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.11/dist-packages (from python-dateutil>=2.8.2->pandas) (1.17.0) Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.11/dist-packages (from requests>2.7->pygbif) (3.4.1) Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.11/dist-packages (from requests>2.7->pygbif) (3.10) Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.11/dist-packages (from requests>2.7->pygbif) (2.3.0) Collecting cattrs>=22.2 (from requests-cache->pygbif) Downloading cattrs-24.1.2-py3-none-any.whl.metadata (8.4 kB) Requirement already satisfied: platformdirs>=2.5 in /usr/local/lib/python3.11/dist-packages (from requests-cache->pygbif) (4.3.6) Collecting url-normalize>=1.4 (from requests-cache->pygbif) Downloading url_normalize-1.4.3-py2.py3-none-any.whl.metadata (3.1 kB) Downloading pygbif-0.6.5-py3-none-any.whl (70 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 70.2/70.2 kB 1.6 MB/s eta 0:00:00 Downloading rasterio-1.4.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.2 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 22.2/22.2 MB 22.5 MB/s eta 0:00:00 Downloading appdirs-1.4.4-py2.py3-none-any.whl (9.6 kB) Downloading cligj-0.7.2-py3-none-any.whl (7.1 kB) Downloading affine-2.4.0-py3-none-any.whl (15 kB) Downloading click_plugins-1.1.1-py2.py3-none-any.whl (7.5 kB) Downloading geojson_rewind-1.1.0-py3-none-any.whl (5.2 kB) Downloading geomet-1.1.0-py3-none-any.whl (31 kB) Downloading requests_cache-1.2.1-py3-none-any.whl (61 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 61.4/61.4 kB 4.7 MB/s eta 0:00:00 Downloading cattrs-24.1.2-py3-none-any.whl (66 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 66.4/66.4 kB 2.9 MB/s eta 0:00:00 Downloading url_normalize-1.4.3-py2.py3-none-any.whl (6.8 kB) Installing collected packages: appdirs, url-normalize, geomet, geojson_rewind, cligj, click-plugins, cattrs, affine, requests-cache, rasterio, pygbif Successfully installed affine-2.4.0 appdirs-1.4.4 cattrs-24.1.2 click-plugins-1.1.1 cligj-0.7.2 geojson_rewind-1.1.0 geomet-1.1.0 pygbif-0.6.5 rasterio-1.4.3 requests-cache-1.2.1 url-normalize-1.4.3
# Importación de librerías
import pandas as pd
import geopandas as gpd
import rasterio
import folium
import matplotlib.pyplot as plt
import seaborn as sns
from pygbif import occurrences
from shapely.geometry import Point
# 2: Definir la especie de estudio
taxon_name = "crocodylus acutus" #(Cocodrilo americano) → Habita manglares y ríos en América.
limit = 400 # Número de registros a recuperar
Cocodrilo americano
# Obtener datos de ocurrencias de la especie desde GBIF
data = occurrences.search(scientificName=taxon_name, limit=limit)
# Convertir los datos en un DataFrame de pandas
df = pd.DataFrame(data["results"])
# Filtrar solo las columnas importantes y eliminar valores nulos
df = df[['year', 'country', 'decimalLatitude', 'decimalLongitude']].dropna()
# 3: Visualización de datos en tablas
print("Primeras 10 filas de los datos obtenidos:")
print(df.head(10))
Primeras 10 filas de los datos obtenidos: year country decimalLatitude decimalLongitude 0 2025 Costa Rica 9.974599 -84.768074 1 2025 Costa Rica 9.991762 -84.693347 2 2025 Costa Rica 10.440814 -83.561761 3 2025 United States of America 26.094581 -81.768940 4 2025 Mexico 20.666279 -105.249776 5 2025 United States of America 25.798816 -80.050613 6 2025 United States of America 25.682305 -80.703266 7 2025 United States of America 25.618440 -80.312925 8 2025 Panama 8.289574 -82.528147 9 2025 Jamaica 18.013030 -77.846584
# : Gráficos estadísticos
# Gráfico de barras: Ocurrencias por país
plt.figure(figsize=(10, 5))
df['country'].value_counts().plot(kind='bar', color='skyblue')
plt.xlabel("País")
plt.ylabel("Número de ocurrencias")
plt.title(f"Distribución de {taxon_name} por país")
plt.xticks(rotation=45)
plt.show()
# Gráfico de líneas: Ocurrencias por año
plt.figure(figsize=(10, 5))
df['year'].value_counts().sort_index().plot(kind='line', marker='o', color='red')
plt.xlabel("Año")
plt.ylabel("Número de ocurrencias")
plt.title(f"Registros de {taxon_name} a lo largo del tiempo")
plt.grid(True)
plt.show()
# Paso 5: Generación de un mapa interactivo con registros de presencia
mapa = folium.Map(location=[df['decimalLatitude'].mean(), df['decimalLongitude'].mean()], zoom_start=4)
for _, row in df.iterrows():
folium.CircleMarker(
location=[row['decimalLatitude'], row['decimalLongitude']],
radius=3,
color='red',
fill=True,
fill_color='red',
fill_opacity=0.6
).add_to(mapa)
# Mostrar el mapa interactivo
mapa
Crocodylus acutus¶
El cocodrilo americano, también conocido como lagarto real, lagarto amarillo o cocodrilo de río,2 asimismo como cocodrilo narigudo, cocodrilo aguja, cocodrilo de la costa3 (Ecuador), caimán de la costa (Venezuela), caimán aguja (Colombia) o cocodrilo de Tumbes (Perú) (Crocodylus acutus), pertenece a la familia de Crocodylidae. Se le suele confundir con aligátores (Alligator) con los cuales está poco emparentado, estos últimos son más próximos a los caimanes, como el yacaré overo (Caiman latirostris). La diferencia física entre ambos grupos es importante, lo que permite identificarlos sin problema.
Distribución¶
Se lo encuentra desde la Florida, EE. UU. y México hasta el norte de Venezuela y Perú, incluyendo las islas de las Antillas, algunas islas del Mar Caribe y zonas costeras del golfo de México (incluyendo la península de Yucatán), hasta ríos de la costa caribeña de Honduras, Nicaragua, Costa Rica, Panamá, Colombia y Venezuela. En países como Perú y Ecuador7 la especie se halla en peligro crítico de extinción junto con el cocodrilo del Orinoco (Crocodylus intermedius). La caza implacable para obtener su piel redujo el número drásticamente en la década de 1960. Ahora hay restricciones que controlan el comercio de caimanes y sus pieles.
Una de las más grandes poblaciones de la especie en Sudamérica se encuentra en el Parque nacional Morrocoy en Venezuela donde se encuentran poblaciones de más de 500 especímenes, además de que los proyectos de conservación de la especie en dicho país liberan unas 100 crías por año.a