Proyecto Final del Curso Introducción a Python
Título: Análisis exploratorio de datos de registros de especies de la familia Hylidae para su uso en la generación de información sobre biodiversidad por medio de herramientas de ciencia de datos.
Estudiantes: Hersson Ramírez Molina y Sylvia Rodríguez Abarca
Descripción del proyecto y justificación
En el presente documento se analiza un dataset proveniente de la plataforma de ciencia ciudadana iNaturalist, la cual ha demostrado ser una fuente de datos confiable sobre biodiversidad, así como otras plataformas de libre acceso como GBIF o eBird (Gattarola et al., 2019), con las que es posible alimentar la cantidad de información existente sobre la biodiversidad del mundo. Este tipo de plataformas de libre acceso se han venido utilizando como una herramienta para la generación de conocimiento, siendo una forma de obtención de datos que requiere de un bajo presupuesto, evitando así la inversión necesaria para metodologías de colecta de datos en campo (Forti & Szabo, 2023). Por ende, son también una herramienta muy valiosa para los procesos de enseñanza en cuanto a ciencia de datos (Heberling et al., 2021). El conjunto de datos descargado de la plataforma se basa en reportes de la familia de ranas Hylidae en Costa Rica, los cuales fueron analizados para ver variables como cantidad de especies reportadas de dicha familia en el país y en cada una de sus provincias, así como la cantidad de reportes para el país y de la misma forma para cada una de las provincias. Además, se analiza el estado de los reportes de cada especie con el fin de observar la cantidad de datos confirmados a nivel de investigación y la cantidad de registros que aún necesitan ser identificadas, con el fin de evidenciar la cantidad de datos utilizable a nivel científico al momento de la descarga del conjunto de datos. Así mismo se intenta analizar la posibilidad de que podría existir una dificultad en la identificación de algunas especies según sus rasgos morfológicos.
Antecedentes
Junto con el desarrollo de la tecnología ha crecido un nuevo paradigma para la generación e integración de información sobre biodiversidad, con el que es posible desarrollar información científica y aportar al estado y conservación de muchas especies alrededor del mundo (Soberón & Peterson, 2012; Zhang, 2017; Heberling et al., 2021; Wangyal, 2022). La utilización de los conjuntos de datos llamados macrodatos ha venido a ofrecer una manera valiosa de aportar información y llenar vacíos en muchos ámbitos relacionados con la biodiversidad (Zhang, 2017). Un ejemplo de la utilidad de estas herramientas es la posibilidad de contar con el esfuerzo de la población en general por medio de la ciencia ciudadana, usando conjuntos de datos tomados por ciudadanos de un lugar para responder millones de interrogantes sobre biodiversidad, como lo realizan los investigadores Forti y Szabo (2023), quienes analizan un conjunto de datos provenientes de iNaturalist con el objetivo de observar la situación de un grupo de anfibios en Brasil.
Descripción del problema y objetivo
El grupo de los anfibios ha sido ampliamente utilizado como indicador de la calidad ambiental debido a las características sensibles con las que cuentan y las muchas amenazas a las que se enfrentan, como su dependencia a los cuerpos de agua para completar su ciclo de vida y la calidad de la misma (Barreto, 2021; Laufer, 2021). Por lo que nuestro objetivo es evaluar la calidad de los datos de reportes de la familia de ranas Hylidae, con el fin de averiguar su potencial para la evaluación del estado de sus poblaciones en el país por medio de herramientas de análisis de datos.
Descripción de los datos.
Se utilizó un conjunto de datos descargado de iNaturalist, el cual contiene todos los registros de presencia de especies de ranas de la familia Hylidae en Costa Rica. De dicho conjunto de datos fueron selecciondas para el análisis las columnas con información de su identificación (especie), la provincia en dónde se registró, las coordenadas (latitud y longitud) y el grado de calidad del registro.
iNaturalist community. Observaciones de la familia Hylidae de Costa Rica. Exportada de https://costarica.inaturalist.org en 30 de mayo de 2024.
import pandas as pd
# Leemos el archivo CSV en un DataFrame de pandas
df = pd.read_csv('Hylidae.csv')
# Mostramos las primeras 20 filas del DataFrame
df.head(20)
id | observed_on_string | observed_on | time_observed_at | time_zone | user_id | user_login | user_name | created_at | updated_at | ... | positioning_device | place_county_name | place_state_name | species_guess | scientific_name | common_name | iconic_taxon_name | taxon_id | taxon_class_name | taxon_family_name | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 11957 | 2007-01-05 | 2007-01-05 | NaN | Pacific Time (US & Canada) | 642 | biosam | Sam McNally | 2011-03-03 20:04:37 UTC | 2017-08-02 06:54:11 UTC | ... | manual | Sarapiqui, Heredia Costa Rica | Heredia | Olive Snouted-Treefrog | Scinax elaeochroa | rana arborícola hocico oliva | Amphibia | 134631 | Amphibia | Hylidae |
1 | 14994 | Jan 6, 2002 | 2002-01-06 | NaN | Eastern Time (US & Canada) | 1026 | aamuir | NaN | 2011-04-21 23:32:10 UTC | 2015-05-13 03:15:18 UTC | ... | NaN | Golfito | Puntarenas | Drab Treefrog | Smilisca sordida | rana arborícola parda | Amphibia | 24276 | Amphibia | Hylidae |
2 | 18207 | 2008-05-19 | 2008-05-19 | NaN | Eastern Time (US & Canada) | 1325 | jplarry | J.P. Lawrence | 2011-05-25 18:03:53 UTC | 2018-07-19 02:37:53 UTC | ... | NaN | Sarapiqui, Heredia Costa Rica | Heredia | Boana rufitela | Boana rufitela | Rana Arborícola de La Zona del Canal | Amphibia | 555152 | Amphibia | Hylidae |
3 | 18208 | 2008-05-19 | 2008-05-19 | NaN | Eastern Time (US & Canada) | 1325 | jplarry | J.P. Lawrence | 2011-05-25 18:09:51 UTC | 2018-09-11 05:29:17 UTC | ... | NaN | Sarapiqui, Heredia Costa Rica | Heredia | Parachuting Red-eyed Leaf Frog | Agalychnis saltator | NaN | Amphibia | 23699 | Amphibia | Hylidae |
4 | 18217 | 2008-05-21 | 2008-05-21 | NaN | Eastern Time (US & Canada) | 1325 | jplarry | J.P. Lawrence | 2011-05-25 18:43:40 UTC | 2019-05-20 09:58:01 UTC | ... | NaN | Sarapiqui, Heredia Costa Rica | Heredia | Olive Snouted Tree Frog | Scinax elaeochroa | rana arborícola hocico oliva | Amphibia | 134631 | Amphibia | Hylidae |
5 | 18219 | 2008-05-22 | 2008-05-22 | NaN | Eastern Time (US & Canada) | 1325 | jplarry | J.P. Lawrence | 2011-05-25 18:45:24 UTC | 2015-12-27 04:21:55 UTC | ... | NaN | Sarapiqui, Heredia Costa Rica | Heredia | Rana-de árbol amarillenta | Dendropsophus ebraccatus | Rana arbórea amarillenta | Amphibia | 65349 | Amphibia | Hylidae |
6 | 18442 | 2011-05-10 | 2011-05-10 | NaN | Central Time (US & Canada) | 1335 | cesarlba | Cesar Barrio-Amorós | 2011-05-26 22:39:54 UTC | 2014-10-20 03:30:11 UTC | ... | NaN | Heredia | Heredia | Agalychnis annae | Agalychnis annae | Rana de Cafetal | Amphibia | 23697 | Amphibia | Hylidae |
7 | 18453 | 2010-06-25 | 2010-06-25 | NaN | Central Time (US & Canada) | 1423 | acpickard | NaN | 2011-05-27 01:48:42 UTC | 2020-10-28 22:19:55 UTC | ... | NaN | San Carlos | Alajuela | Yellow Treefrog | Dendropsophus microcephalus | Rana de árbol amarilla | Amphibia | 65373 | Amphibia | Hylidae |
8 | 20180 | 2007-01-07 | 2007-01-07 | NaN | Pacific Time (US & Canada) | 642 | biosam | Sam McNally | 2011-06-04 23:15:41 UTC | 2017-08-02 06:54:12 UTC | ... | manual | Sarapiqui, Heredia Costa Rica | Heredia | Olive Snouted-Treefrog | Scinax elaeochroa | rana arborícola hocico oliva | Amphibia | 134631 | Amphibia | Hylidae |
9 | 21424 | 2011-06-11 | 2011-06-11 | NaN | Central America | 1236 | victoracostachaves | Víctor Acosta Chaves | 2011-06-14 00:05:25 UTC | 2021-09-23 21:14:14 UTC | ... | NaN | Golfito | Puntarenas | Rosenberg's Gladiator Frog | Boana rosenbergi | rana arbórea de gladiadora | Amphibia | 555150 | Amphibia | Hylidae |
10 | 22504 | June 07, 2006 03:08 | 2006-06-07 | 2006-06-07 01:08:00 UTC | Amsterdam | 1948 | bjsmit | BJ Smit | 2011-06-22 19:30:10 UTC | 2022-08-03 08:37:43 UTC | ... | NaN | Liberia | Guanacaste | Drab Tree Frog | Smilisca sordida | rana arborícola parda | Amphibia | 24276 | Amphibia | Hylidae |
11 | 22507 | June 11, 2006 03:19 | 2006-06-11 | 2006-06-11 01:19:00 UTC | Amsterdam | 1948 | bjsmit | BJ Smit | 2011-06-22 19:36:54 UTC | 2018-09-17 17:41:11 UTC | ... | NaN | San Carlos | Alajuela | Masked Tree Frog | Smilisca phaeota | rana arborícola enmascarada | Amphibia | 24272 | Amphibia | Hylidae |
12 | 22600 | 2006-06-12 | 2006-06-12 | NaN | Amsterdam | 1948 | bjsmit | BJ Smit | 2011-06-23 09:58:38 UTC | 2018-09-17 17:40:45 UTC | ... | NaN | Bagaces | Guanacaste | Olive Snouted-Treefrog | Scinax elaeochroa | rana arborícola hocico oliva | Amphibia | 134631 | Amphibia | Hylidae |
13 | 22601 | 2006-06-14 | 2006-06-14 | NaN | Amsterdam | 1948 | bjsmit | BJ Smit | 2011-06-23 10:01:45 UTC | 2017-04-16 00:11:14 UTC | ... | NaN | La Unión | Cartago | Boulenger's Treefrog | Scinax boulengeri | rana arboricola narizona de boulenger | Amphibia | 24310 | Amphibia | Hylidae |
14 | 22609 | 2006-06-25 | 2006-06-25 | NaN | Amsterdam | 1948 | bjsmit | BJ Smit | 2011-06-23 11:53:51 UTC | 2018-08-28 14:54:50 UTC | ... | NaN | Aguirre | Puntarenas | Rosenberg's Gladiator Frog | Boana rosenbergi | rana arbórea de gladiadora | Amphibia | 555150 | Amphibia | Hylidae |
15 | 22625 | 2006-06-11 | 2006-06-11 | NaN | Amsterdam | 1948 | bjsmit | BJ Smit | 2011-06-23 16:35:57 UTC | 2021-10-01 18:45:01 UTC | ... | NaN | Bagaces | Guanacaste | Masked Tree Frog | Smilisca phaeota | rana arborícola enmascarada | Amphibia | 24272 | Amphibia | Hylidae |
16 | 23598 | 2009-12-23 | 2009-12-23 | NaN | Central America | 1236 | victoracostachaves | Víctor Acosta Chaves | 2011-07-01 19:54:08 UTC | 2021-09-23 21:14:14 UTC | ... | NaN | Heredia | Heredia | Olive Snouted-Treefrog | Scinax elaeochroa | rana arborícola hocico oliva | Amphibia | 134631 | Amphibia | Hylidae |
17 | 23601 | 2010-10-06 | 2010-10-06 | NaN | Central America | 1236 | victoracostachaves | Víctor Acosta Chaves | 2011-07-01 20:05:27 UTC | 2021-09-23 21:14:14 UTC | ... | NaN | Sarapiqui, Heredia Costa Rica | Heredia | Boana rufitela | Boana rufitela | Rana Arborícola de La Zona del Canal | Amphibia | 555152 | Amphibia | Hylidae |
18 | 23666 | 2009-08-21 | 2009-08-21 | NaN | Central America | 1236 | victoracostachaves | Víctor Acosta Chaves | 2011-07-02 00:24:40 UTC | 2021-09-23 21:14:14 UTC | ... | NaN | Pococí | Limón | Rana-de árbol amarillenta | Dendropsophus ebraccatus | Rana arbórea amarillenta | Amphibia | 65349 | Amphibia | Hylidae |
19 | 25160 | 2011-03-15 | 2011-03-15 | NaN | Pacific Time (US & Canada) | 2246 | redpine | NaN | 2011-07-16 15:52:42 UTC | 2018-09-19 22:17:11 UTC | ... | NaN | Coto Brus | Puntarenas | Drab Treefrog | Smilisca sordida | rana arborícola parda | Amphibia | 24276 | Amphibia | Hylidae |
20 rows × 38 columns
# Mostramos las últimas 20 filas del DataFrame
df.tail(20)
id | observed_on_string | observed_on | time_observed_at | time_zone | user_id | user_login | user_name | created_at | updated_at | ... | positioning_device | place_county_name | place_state_name | species_guess | scientific_name | common_name | iconic_taxon_name | taxon_id | taxon_class_name | taxon_family_name | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
16185 | 219203288 | 2024-05-28 19:21:45-06:00 | 2024-05-28 | 2024-05-29 01:21:45 UTC | America/Costa_Rica | 278652 | paulerik | Paul-Erik Bakland | 2024-05-29 22:00:42 UTC | 2024-05-30 18:26:03 UTC | ... | NaN | San Carlos | Alajuela | Red-eyed Tree Frog | Agalychnis callidryas | Rana de árbol de ojos rojos | Amphibia | 23702 | Amphibia | Hylidae |
16186 | 219223710 | 2024-05-28 20:42:18 | 2024-05-28 | 2024-05-29 02:42:18 UTC | America/Costa_Rica | 2589389 | dapsang | NaN | 2024-05-30 00:03:10 UTC | 2024-05-30 00:03:37 UTC | ... | gps | Talamanca | Limón | Snouted Tree Frogs | Scinax | Ranas arborícolas trompudas | Amphibia | 24278 | Amphibia | Hylidae |
16187 | 219232042 | 2024-05-29 18:56:32 | 2024-05-29 | 2024-05-30 00:56:32 UTC | America/Costa_Rica | 4261800 | damian_bruno | Sedona's 3D's | 2024-05-30 00:57:32 UTC | 2024-05-30 08:15:17 UTC | ... | gps | Santa Cruz | Guanacaste | Smilisca baudinii | Smilisca baudinii | Rana arborícola mexicana | Amphibia | 24277 | Amphibia | Hylidae |
16188 | 219244763 | 2024-05-29 20:12:47-06:00 | 2024-05-29 | 2024-05-30 02:12:47 UTC | America/Costa_Rica | 2600703 | jennaceraso | Jenna Ceraso | 2024-05-30 02:23:37 UTC | 2024-05-30 18:22:21 UTC | ... | NaN | Santa Cruz | Guanacaste | Mexican Smilisca | Smilisca baudinii | Rana arborícola mexicana | Amphibia | 24277 | Amphibia | Hylidae |
16189 | 219244829 | 2024-05-29 20:11:48-06:00 | 2024-05-29 | 2024-05-30 02:11:48 UTC | America/Costa_Rica | 2600703 | jennaceraso | Jenna Ceraso | 2024-05-30 02:24:06 UTC | 2024-05-30 18:21:45 UTC | ... | NaN | Santa Cruz | Guanacaste | Mexican Smilisca | Smilisca baudinii | Rana arborícola mexicana | Amphibia | 24277 | Amphibia | Hylidae |
16190 | 219244934 | 2024-05-29 20:10:18-06:00 | 2024-05-29 | 2024-05-30 02:10:18 UTC | America/Costa_Rica | 2600703 | jennaceraso | Jenna Ceraso | 2024-05-30 02:24:59 UTC | 2024-05-30 08:14:00 UTC | ... | NaN | Santa Cruz | Guanacaste | Mexican Smilisca | Smilisca baudinii | Rana arborícola mexicana | Amphibia | 24277 | Amphibia | Hylidae |
16191 | 219245189 | 2024-05-29 20:09:10-06:00 | 2024-05-29 | 2024-05-30 02:09:10 UTC | America/Costa_Rica | 2600703 | jennaceraso | Jenna Ceraso | 2024-05-30 02:26:50 UTC | 2024-05-30 08:13:42 UTC | ... | NaN | Santa Cruz | Guanacaste | Mexican Smilisca | Smilisca baudinii | Rana arborícola mexicana | Amphibia | 24277 | Amphibia | Hylidae |
16192 | 219245333 | 2024-05-29 20:07:25-06:00 | 2024-05-29 | 2024-05-30 02:07:25 UTC | America/Costa_Rica | 2600703 | jennaceraso | Jenna Ceraso | 2024-05-30 02:27:51 UTC | 2024-05-30 08:13:22 UTC | ... | NaN | Santa Cruz | Guanacaste | Mexican Smilisca | Smilisca baudinii | Rana arborícola mexicana | Amphibia | 24277 | Amphibia | Hylidae |
16193 | 219245428 | 2024-05-29 20:06:30-06:00 | 2024-05-29 | 2024-05-30 02:06:30 UTC | America/Costa_Rica | 2600703 | jennaceraso | Jenna Ceraso | 2024-05-30 02:28:37 UTC | 2024-05-30 08:13:01 UTC | ... | NaN | Santa Cruz | Guanacaste | Mexican Smilisca | Smilisca baudinii | Rana arborícola mexicana | Amphibia | 24277 | Amphibia | Hylidae |
16194 | 219247216 | 2024-05-29 20:05:34-06:00 | 2024-05-29 | 2024-05-30 02:05:34 UTC | America/Costa_Rica | 2600703 | jennaceraso | Jenna Ceraso | 2024-05-30 02:42:39 UTC | 2024-05-30 18:21:17 UTC | ... | NaN | Santa Cruz | Guanacaste | Mexican Smilisca | Smilisca baudinii | Rana arborícola mexicana | Amphibia | 24277 | Amphibia | Hylidae |
16195 | 219277315 | 2024-03-23 18:13:22 | 2024-03-23 | 2024-03-24 00:13:22 UTC | America/Costa_Rica | 5345354 | jannik15 | Jannik | 2024-05-30 07:59:48 UTC | 2024-05-30 18:19:32 UTC | ... | gps | San Carlos | Alajuela | Rotaugenlaubfrosch | Agalychnis callidryas | Rana de árbol de ojos rojos | Amphibia | 23702 | Amphibia | Hylidae |
16196 | 219311082 | 2024-05-29 22:16:58 | 2024-05-29 | 2024-05-30 04:16:58 UTC | America/Costa_Rica | 7841429 | magcent | NaN | 2024-05-30 13:04:16 UTC | 2024-05-30 21:50:56 UTC | ... | NaN | Desamparados | San José | Rana de Cafetal | Agalychnis annae | Rana de Cafetal | Amphibia | 23697 | Amphibia | Hylidae |
16197 | 219379440 | 2022-11-06 | 2022-11-06 | NaN | America/Costa_Rica | 5709301 | pedrovictoraf | Pedro Víctor Albaladejo Fresnadillo | 2024-05-30 18:50:30 UTC | 2024-05-30 21:49:48 UTC | ... | NaN | Pococí | Limón | Rana Deslizadora | Agalychnis spurrelli | Rana Deslizadora | Amphibia | 134927 | Amphibia | Hylidae |
16198 | 219379604 | 2024-05-30 12:49:30 | 2024-05-30 | 2024-05-30 18:49:30 UTC | America/Costa_Rica | 3471495 | marcemendez | Marcela Mendez Zamora | 2024-05-30 18:51:14 UTC | 2024-05-30 21:49:27 UTC | ... | NaN | Turrubares | San José | rana arbórea de gladiadora | Boana rosenbergi | rana arbórea de gladiadora | Amphibia | 555150 | Amphibia | Hylidae |
16199 | 219382929 | 2023-01-19 20:21:25-06:00 | 2023-01-19 | 2023-01-20 02:21:25 UTC | America/Costa_Rica | 4955690 | cassidyjimenez | NaN | 2024-05-30 19:06:38 UTC | 2024-05-30 21:48:15 UTC | ... | NaN | Pérez Zeledón | San José | Red-eyed Tree Frog | Agalychnis callidryas | Rana de árbol de ojos rojos | Amphibia | 23702 | Amphibia | Hylidae |
16200 | 219426521 | 2024/05/26 1:08 AM | 2024-05-26 | 2024-05-26 07:08:00 UTC | America/Costa_Rica | 6168763 | sergiogarrido | Sergio Garrido Villa | 2024-05-30 23:01:50 UTC | 2024-05-30 23:22:44 UTC | ... | NaN | Golfito | Puntarenas | Trachycephalus vermiculatus | Trachycephalus vermiculatus | Rana Arborícola Vermiculada | Amphibia | 1148187 | Amphibia | Hylidae |
16201 | 219453362 | 2024-05-30 18:59:00 | 2024-05-30 | 2024-05-31 00:59:00 UTC | America/Costa_Rica | 5902977 | yanethcordero07 | Jeanneth MC | 2024-05-31 01:59:23 UTC | 2024-05-31 02:32:40 UTC | ... | gps | Buenos Aires | Puntarenas | rana arborícola enmascarada | Smilisca phaeota | rana arborícola enmascarada | Amphibia | 24272 | Amphibia | Hylidae |
16202 | 219465674 | 2024-05-30 20:05:59-06:00 | 2024-05-30 | 2024-05-31 02:05:59 UTC | America/Costa_Rica | 278652 | paulerik | Paul-Erik Bakland | 2024-05-31 03:41:39 UTC | 2024-05-31 03:41:46 UTC | ... | NaN | San Ramón | Alajuela | NaN | Dendropsophus microcephalus | Rana de árbol amarilla | Amphibia | 65373 | Amphibia | Hylidae |
16203 | 219466730 | 2024-05-30 20:37:15-06:00 | 2024-05-30 | 2024-05-31 02:37:15 UTC | America/Costa_Rica | 278652 | paulerik | Paul-Erik Bakland | 2024-05-31 03:50:20 UTC | 2024-05-31 03:50:28 UTC | ... | NaN | San Ramón | Alajuela | NaN | Smilisca sordida | rana arborícola parda | Amphibia | 24276 | Amphibia | Hylidae |
16204 | 219466870 | 2024-05-30 20:38:46-06:00 | 2024-05-30 | 2024-05-31 02:38:46 UTC | America/Costa_Rica | 278652 | paulerik | Paul-Erik Bakland | 2024-05-31 03:51:26 UTC | 2024-05-31 03:51:36 UTC | ... | NaN | San Ramón | Alajuela | NaN | Dendropsophus ebraccatus | Rana arbórea amarillenta | Amphibia | 65349 | Amphibia | Hylidae |
20 rows × 38 columns
# Información general del DataFrame donde se pueden observar todas las columnas
# que lo componen, número de filas y la cantidad de datos no-nulos por columna
df.info()
<class 'pandas.core.frame.DataFrame'> RangeIndex: 16205 entries, 0 to 16204 Data columns (total 38 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 id 16205 non-null int64 1 observed_on_string 16205 non-null object 2 observed_on 16205 non-null object 3 time_observed_at 15210 non-null object 4 time_zone 16205 non-null object 5 user_id 16205 non-null int64 6 user_login 16205 non-null object 7 user_name 11264 non-null object 8 created_at 16205 non-null object 9 updated_at 16205 non-null object 10 quality_grade 16205 non-null object 11 license 10601 non-null object 12 url 16205 non-null object 13 image_url 16133 non-null object 14 description 1667 non-null object 15 num_identification_agreements 16205 non-null int64 16 num_identification_disagreements 16205 non-null int64 17 place_guess 16128 non-null object 18 latitude 16205 non-null float64 19 longitude 16205 non-null float64 20 positional_accuracy 13635 non-null float64 21 private_latitude 0 non-null float64 22 private_longitude 0 non-null float64 23 public_positional_accuracy 13835 non-null float64 24 geoprivacy 584 non-null object 25 taxon_geoprivacy 13089 non-null object 26 coordinates_obscured 16205 non-null bool 27 positioning_method 3427 non-null object 28 positioning_device 3501 non-null object 29 place_county_name 16205 non-null object 30 place_state_name 16205 non-null object 31 species_guess 15547 non-null object 32 scientific_name 16205 non-null object 33 common_name 15281 non-null object 34 iconic_taxon_name 16205 non-null object 35 taxon_id 16205 non-null int64 36 taxon_class_name 16205 non-null object 37 taxon_family_name 16205 non-null object dtypes: bool(1), float64(6), int64(5), object(26) memory usage: 4.6+ MB
# Realizamos un resumen estadístico del dataframe de la famiñia Hylidae
df.describe()
id | user_id | num_identification_agreements | num_identification_disagreements | latitude | longitude | positional_accuracy | private_latitude | private_longitude | public_positional_accuracy | taxon_id | |
---|---|---|---|---|---|---|---|---|---|---|---|
count | 1.620500e+04 | 1.620500e+04 | 16205.000000 | 16205.000000 | 16205.000000 | 16205.000000 | 1.363500e+04 | 0.0 | 0.0 | 1.383500e+04 | 1.620500e+04 |
mean | 1.182438e+08 | 2.808640e+06 | 1.640049 | 0.017587 | 9.906405 | -84.092520 | 8.588067e+03 | NaN | NaN | 1.089986e+04 | 1.763843e+05 |
std | 6.534110e+07 | 2.332418e+06 | 1.043707 | 0.133776 | 0.722171 | 0.714074 | 2.088923e+05 | NaN | NaN | 2.074524e+05 | 3.102960e+05 |
min | 1.195700e+04 | 1.000000e+00 | 0.000000 | 0.000000 | 8.225319 | -85.995604 | 0.000000e+00 | NaN | NaN | 0.000000e+00 | 2.354000e+04 |
25% | 6.150219e+07 | 7.353580e+05 | 1.000000 | 0.000000 | 9.411895 | -84.661718 | 1.400000e+01 | NaN | NaN | 1.500000e+01 | 2.370200e+04 |
50% | 1.277961e+08 | 2.262354e+06 | 2.000000 | 0.000000 | 10.204416 | -84.054056 | 1.220000e+02 | NaN | NaN | 1.870000e+02 | 2.427600e+04 |
75% | 1.745532e+08 | 4.695197e+06 | 2.000000 | 0.000000 | 10.450328 | -83.511078 | 6.115000e+02 | NaN | NaN | 1.341000e+03 | 1.346310e+05 |
max | 2.194669e+08 | 8.206970e+06 | 9.000000 | 2.000000 | 11.123827 | -82.512459 | 2.254219e+07 | NaN | NaN | 2.254219e+07 | 1.530492e+06 |
# Figura 1. Realizamos un gráfico para observar la cantidad de datos nulos por columna del df
import seaborn as sns
import matplotlib.pyplot as plt
# Mostramos los valores nulos para cada columna
print("Valores nulos por columna:")
print(df.isnull().sum())
# Hacemos un mapa de calor con los valores nulos por columna
sns.heatmap(df.isnull(), cbar=True, cmap='viridis')
plt.show()
Valores nulos por columna: id 0 observed_on_string 0 observed_on 0 time_observed_at 995 time_zone 0 user_id 0 user_login 0 user_name 4941 created_at 0 updated_at 0 quality_grade 0 license 5604 url 0 image_url 72 description 14538 num_identification_agreements 0 num_identification_disagreements 0 place_guess 77 latitude 0 longitude 0 positional_accuracy 2570 private_latitude 16205 private_longitude 16205 public_positional_accuracy 2370 geoprivacy 15621 taxon_geoprivacy 3116 coordinates_obscured 0 positioning_method 12778 positioning_device 12704 place_county_name 0 place_state_name 0 species_guess 658 scientific_name 0 common_name 924 iconic_taxon_name 0 taxon_id 0 taxon_class_name 0 taxon_family_name 0 dtype: int64
# Seleccionamos las columnas de interés para nuestro análisis, descartando las
# columnas con muchos datos nulos
df_nuevo = df[['quality_grade', "latitude", "longitude", "place_state_name", "scientific_name"]]
print("\nNuevo DataFrame")
print(df_nuevo)
Nuevo DataFrame quality_grade latitude longitude place_state_name \ 0 research 10.430811 -84.005815 Heredia 1 research 8.542727 -83.521683 Puntarenas 2 research 10.430130 -84.007076 Heredia 3 research 10.429954 -84.005673 Heredia 4 research 10.429976 -84.005687 Heredia ... ... ... ... ... 16200 research 8.424047 -83.389432 Puntarenas 16201 needs_id 8.892128 -83.147845 Puntarenas 16202 needs_id 10.446312 -84.667420 Alajuela 16203 needs_id 10.446350 -84.667450 Alajuela 16204 needs_id 10.446413 -84.667405 Alajuela scientific_name 0 Scinax elaeochroa 1 Smilisca sordida 2 Boana rufitela 3 Agalychnis saltator 4 Scinax elaeochroa ... ... 16200 Trachycephalus vermiculatus 16201 Smilisca phaeota 16202 Dendropsophus microcephalus 16203 Smilisca sordida 16204 Dendropsophus ebraccatus [16205 rows x 5 columns]
# Figura 2. Realizamos un diagrama de dispersión para explorar la distribución
# geográfica de las observaciones de Hylidae
x = df_nuevo["longitude"]
y = df_nuevo["latitude"]
plt.figure(figsize=(12, 10))
plt.scatter(x, y, alpha=0.7)
plt.title('Diagrama de dispersión de latitud y longitud para la familia ' + "Hylidae")
plt.xlabel('Longitud')
plt.ylabel('Latitud')
plt.grid(True)
plt.show()
# Observamos el número de valores únicos en cada columna del dataframe nuevo_df
df_nuevo.nunique( )
quality_grade 2 latitude 13054 longitude 12880 place_state_name 7 scientific_name 53 dtype: int64
# Imprimimos la cantidad de ocurrencias de cada valor único en la columna
# 'scientific_name' que corresponderá al número de especies reportadas
especies = df_nuevo['scientific_name'].value_counts()
especies
scientific_name Agalychnis callidryas 4371 Smilisca phaeota 1816 Dendropsophus ebraccatus 1059 Boana rosenbergi 878 Scinax elaeochroa 870 Smilisca sordida 709 Smilisca 597 Trachycephalus vermiculatus 593 Hylidae 538 Boana rufitela 486 Dendropsophus microcephalus 458 Smilisca baudinii 386 Smilisca manisorum 307 Scinax boulengeri 286 Duellmanohyla rufioculis 258 Agalychnis annae 256 Hylinae 242 Cruziohyla sylviae 179 Agalychnis spurrelli 177 Agalychnis 176 Tlalocohyla loquax 175 Scinax 154 Scinax staufferi 150 Isthmohyla pseudopuma 137 Dendropsophus 115 Triprion spinosus 100 Agalychnis saltator 99 Dendropsophus phlebodes 89 Boana 89 Agalychnis lemur 82 Smilisca puma 69 Smilisca sila 58 Duellmanohyla legleri 54 Tlalocohyla celeste 31 Duellmanohyla 25 Trachycephalus 24 Isthmohyla rivularis 20 Hyloscirtus palmeri 16 Isthmohyla lancasteri 14 Duellmanohyla uranochroa 12 Ecnomiohyla sukia 10 Isthmohyla 9 Isthmohyla tica 6 Phyllomedusinae 4 Isthmohyla picadoi 4 Isthmohyla pictipes 3 Isthmohyla zeteki 3 Isthmohyla angustilineata 3 Osteopilus septentrionalis 3 Ecnomiohyla 2 Tlalocohyla 1 Cruziohyla 1 Ecnomiohyla fimbrimembra 1 Name: count, dtype: int64
# Figura 3. Creamos un gráfico de barras para vizualizar la cantidad de registros
# por especie de la familia Hylidae
# Tamaño del gráfico
plt.figure(figsize=(15, 6))
# Crear gráfico de barras
especies.plot(kind='bar')
# Título del gráfico
plt.title('Especies reportadas de la familia Hylidae')
# Etiqueta del eje Y
plt.ylabel('Especie')
# Etiqueta del eje X
plt.xlabel('Número de Registros')
plt.grid()
plt.show()
# Figura 4. Creamos un gráfico de barras para vizualizar la cantidad de registros
# por provincia de la familia Hylidae
provincias = df_nuevo.groupby('place_state_name')['scientific_name'].size()
# Tamaño del gráfico
plt.figure(figsize=(15, 10))
# Crear gráfico de barras
provincias.plot(kind='bar', color = "Grey")
# Título del gráfico
plt.title('Registros por provincia de la familia Hylidae')
# Etiqueta del eje Y
plt.ylabel('Registros')
# Etiqueta del eje X
plt.xlabel('Provincias')
plt.xticks(rotation=360)
plt.grid()
plt.show()
# Figura 5. Creamos un gráfico de barras para vizualizar la cantidad de registros
# de especies por provincia de la familia Hylidae
# Contar el número de especies únicas por provincia
unicas = df_nuevo.groupby('place_state_name')['scientific_name'].nunique()
print("Cantidad de especies reportadas por provincia:")
print(unicas)
# Crear el gráfico de barras
plt.figure(figsize=(15, 10))
unicas.plot(kind='barh')
# Añadir etiquetas y título
plt.xlabel('Provincias')
plt.ylabel('Cantidad de especies')
plt.title('Especies por provincia de la familia Hylidae')
# Mostrar el gráfico
plt.grid()
plt.show()
Cantidad de especies reportadas por provincia: place_state_name Alajuela 44 Cartago 33 Guanacaste 31 Heredia 36 Limón 34 Puntarenas 36 San José 34 Name: scientific_name, dtype: int64
# Accedemos a una columna de interés para observar la información que la conforma
df_nuevo['quality_grade']
0 research 1 research 2 research 3 research 4 research ... 16200 research 16201 needs_id 16202 needs_id 16203 needs_id 16204 needs_id Name: quality_grade, Length: 16205, dtype: object
# Observamos los tipos de valores únicos que componen la columna de interés
valores_unicos = df_nuevo['quality_grade'].unique()
print(valores_unicos)
['research' 'needs_id']
# Figura 6. Creamos un gráfico de barras para vizualizar el estado de identificación
# de los registros de la familia Hylidae
# Contar el número de especies únicas por provincia
research = df_nuevo['quality_grade'].value_counts()
print("Estado de identificación de los registros de la familia Hylidae:")
print(research)
fig, ax = plt.subplots(figsize=(15, 10))
research.plot(kind='bar', color='green', ax=ax)
# Añadir etiquetas y título
ax.set_xlabel('Estado')
ax.set_ylabel('Cantidad de registros')
ax.set_title('Estado de identificación de los registros de la familia Hylidae')
etiquetas = ['Grado de Investigación', 'Necesita ID']
ax.set_xticklabels(etiquetas, rotation=360, ha='center')
# Mostrar el gráfico
plt.grid()
plt.show()
Estado de identificación de los registros de la familia Hylidae: quality_grade research 12761 needs_id 3444 Name: count, dtype: int64
# Creamos un dataframe para vizualizar el estado de identificación por
# especie de los registros de la familia Hylidae
grd = df_nuevo.groupby('scientific_name')['quality_grade'].value_counts()
print("Estado de identificación de los registros de la familia Hylidae:")
print(grd)
Estado de identificación de los registros de la familia Hylidae: scientific_name quality_grade Agalychnis needs_id 171 research 5 Agalychnis annae research 238 needs_id 18 Agalychnis callidryas research 4196 ... Tlalocohyla loquax needs_id 12 Trachycephalus needs_id 24 Trachycephalus vermiculatus research 577 needs_id 16 Triprion spinosus research 100 Name: count, Length: 89, dtype: int64
# Figura 7. Creamos un gráfico de barras para observar el estado de identificación
# por especie de los registros de la familia Hylidae
plt.figure(figsize=(10, 30))
grd.plot(kind='barh')
# Añadir etiquetas y título
plt.xlabel('Estado')
plt.ylabel('Cantidad de registros')
plt.title('Estado de identificación de los registros de la familia Hylidae')
# Mostrar el gráfico
plt.grid()
plt.show()
Descripción de los resultados obtenidos
Fueron descargados 16 205 registros de especies de ranas de la familia Hylidae. Con el análisis preliminar de los datos (Figura 1) se eliminaron las columnas que contenían una alta cantidad de datos nulos, además de las columnas que no se consideraron de interés según el objetivo, pasando de 38 a 5 columnas. Por lo que se decidió utilizar las 5 columnas mencionadas en la descripción de los datos, las cuales no contenían datos nulos.
Se observa que la ubicación de los registros, con respecto a la información de la longitud y la latitud, se encuentra bastante certera, habiendo una poca cantidad de datos fuera de la distribución real (Figura 2).
Se obtuvo la cantidad de registros por especie, según se observa en la Figura 3, siendo las siguientes especies las primeras 5 con más registros:
Agalychnis callidryas 4371 Smilisca phaeota 1816 Dendropsophus ebraccatus 1059 Boana rosenbergi 878 Scinax elaeochroa 870
Como se observa, la especie más registrada es Agalychnis callidryas, seguida de Smilisca phaeota y Dendropsophus ebraccatus, las cuales son especies fáciles de identificar gracias a sus características morfológicas, además de encontrarse ampliamente distribuidas en el país.
Se obtuvo además, la cantidad de registros por provincia, siendo la provincia de Puntarenas la que contiene mayor cantidad de registros de ranas de esta familia, seguida de la provincia de Alajuela. Por el contrario, la provincia con menor cantidad de registros es Cartago (Figura 4). Así mismo, se visualizó la cantidad de especies por provincia, donde Alajuela tiene una mayor riqueza con 44 especies, seguido de Heredia y Puntarenas con 36 especies cada una (Figura 5).
Por otro lado, al analizar el estado de identificación de cada registro, se observa que la mayor cantidad de los registros (12761) en el conjunto de datos alcanzaron el grado de investigación, como se observa en la figura 6, los cuales son datos con una alta confiabilidad taxonómica al momento de su descarga. La minoría de registros (3444) se encuentran aún pendientes de identificación.
En la figura 7 se logra visualizar que la mayoría de especies del género Smilisca, las cuales son similares morfológicamente, cuentan con una cantidad alta de registros que aún necesitan identificación, comparadas con la cantidad de registros que alcanzaron el grado de investigación. Caso contrario ocurre con las especies del género Agalychnis, las cuales cuentan con una proporción muy alta de sus registros en grado de investigación con respecto a los registros que aún necesitan una identificación.
Conclusiones
Los registros de las ranas de la familia Hylidae presentan una alta confiabilidad, tanto en su distribución geográfica como en su identificación taxonómica, para poder ser utilizados para generar conocimiento sobre el estado de sus poblaciones.
Los datos utilizados pueden ser funcionales para evaluar aspectos como densidad poblacional de las especies, identificación de especies raras o poco comunes, distribución geográfica, ecología, especies bioindicadoras, entre otros.
A través del análisis de registros por provincia puede evidenciarse los sitios en donde existe una necesidad de aumentar el esfuerzo para registrar datos sobre un grupo taxonómico específico.
Referencias
Barreto Blanco, M. P. (2021). Utilización de los anfibios como indicadores biológicos para evidenciar los niveles de contaminación en los ecosistemas colombianos.
Forti, L. R., & Szabo, J. K. (2023). The iNaturalist platform as a source of data to study amphibians in Brazil. Anais da Academia Brasileira de Ciências, 95, e20220828.
Grattarola, F., Botto, G., da Rosa, I., Gobel, N., González, E. M., González, J., ... & Pincheira-Donoso, D. (2019). Biodiversidata: An open-access biodiversity database for Uruguay. Biodiversity data journal, 7.
Heberling, J. M., Miller, J. T., Noesgaard, D., Weingart, S. B., & Schigel, D. (2021). Data integration enables global biodiversity synthesis. Proceedings of the National Academy of Sciences, 118(6), e2018093118.
Laufer, G., Gobel, N., Kacevas, N., Lado, I., Cortizas, S., Carabio, M., & Kolenc, F. (2021). Updating the distributions of four Uruguayan hylids (Anura: Hylidae): recent expansions or lack of sampling efforts. Amphibian and Reptile Conservation, 15(2), 228-237.
Soberón, J., & Peterson, T. (2004). Biodiversity informatics: managing and applying primary biodiversity data. Philosophical Transactions of the Royal Society of London. Series B: Biological Sciences, 359(1444), 689-698. Zhang, J. (2017). Biodiversity science and macroecology in the era of big data. Biodiversity Science, 25(4), 355-363.
Wangyal, J. T., Bower, D., Vernes, K., & Thinley, P. (2022). Employing citizen science to understand amphibian and reptile diversity and distribution in the Himalayan Kingdom of Bhutan. Global Ecology and Conservation, 37, e02157.