Introducció
En aquest tema, aprendrem com interactuar amb APIs (Application Programming Interfaces) i com treballar amb dades en format JSON (JavaScript Object Notation) en R. Les APIs són eines poderoses que permeten accedir a dades i serveis externs, mentre que JSON és un format de dades lleuger i fàcil de llegir que s'utilitza àmpliament per intercanviar informació entre sistemes.
Objectius
- Entendre què són les APIs i com funcionen.
- Aprendre a fer peticions a APIs des de R.
- Comprendre el format JSON i com manipular-lo en R.
- Practicar amb exemples reals d'ús d'APIs i JSON.
Conceptes Clau
Què és una API?
Una API és un conjunt de regles i protocols que permeten a diferents aplicacions comunicar-se entre elles. Les APIs sovint s'utilitzen per accedir a serveis web, com ara obtenir dades meteorològiques, informació financera, o dades de xarxes socials.
Què és JSON?
JSON és un format de dades basat en text que és fàcil de llegir i escriure per humans, i fàcil de parsejar i generar per màquines. Es basa en una estructura de claus i valors, similar a un diccionari en molts llenguatges de programació.
Exemple de JSON:
Fer Peticions a APIs des de R
Per fer peticions a APIs en R, utilitzarem el paquet httr
. Aquest paquet proporciona funcions per fer peticions HTTP (GET, POST, etc.) i gestionar les respostes.
Instal·lació del Paquet httr
Fer una Petició GET
Una petició GET és la manera més comuna d'obtenir dades d'una API. A continuació, es mostra un exemple de com fer una petició GET a una API pública que proporciona dades meteorològiques.
# URL de l'API url <- "http://api.weatherstack.com/current?access_key=YOUR_ACCESS_KEY&query=Barcelona" # Fer la petició GET resposta <- GET(url) # Comprovar l'estat de la resposta status_code(resposta)
Parsejar la Resposta JSON
La resposta de l'API sovint estarà en format JSON. Utilitzarem el paquet jsonlite
per parsejar aquesta resposta.
install.packages("jsonlite") library(jsonlite) # Convertir la resposta a text resposta_text <- content(resposta, "text") # Parsejar el JSON dades <- fromJSON(resposta_text) # Visualitzar les dades print(dades)
Exemple Pràctic: Obtenir Dades de l'API de GitHub
A continuació, es mostra un exemple pràctic d'ús de l'API de GitHub per obtenir informació sobre un repositori.
# URL de l'API de GitHub url <- "https://api.github.com/repos/tidyverse/ggplot2" # Fer la petició GET resposta <- GET(url) # Comprovar l'estat de la resposta if (status_code(resposta) == 200) { # Convertir la resposta a text resposta_text <- content(resposta, "text") # Parsejar el JSON dades <- fromJSON(resposta_text) # Visualitzar les dades print(dades) } else { print("Error en la petició") }
Exercicis Pràctics
Exercici 1: Obtenir Dades de l'API de CoinGecko
- Utilitza l'API de CoinGecko per obtenir el preu actual del Bitcoin.
- Parseja la resposta JSON i extreu el preu del Bitcoin.
- Mostra el preu del Bitcoin a la consola.
# URL de l'API de CoinGecko url <- "https://api.coingecko.com/api/v3/simple/price?ids=bitcoin&vs_currencies=usd" # Fer la petició GET resposta <- GET(url) # Comprovar l'estat de la resposta if (status_code(resposta) == 200) { # Convertir la resposta a text resposta_text <- content(resposta, "text") # Parsejar el JSON dades <- fromJSON(resposta_text) # Extreure el preu del Bitcoin preu_bitcoin <- dades$bitcoin$usd # Mostrar el preu del Bitcoin print(paste("El preu actual del Bitcoin és:", preu_bitcoin, "USD")) } else { print("Error en la petició") }
Exercici 2: Obtenir Dades de l'API de OpenWeatherMap
- Registra't a OpenWeatherMap i obtén una clau d'API.
- Utilitza l'API per obtenir el temps actual a la teva ciutat.
- Parseja la resposta JSON i extreu la temperatura actual.
- Mostra la temperatura a la consola.
# URL de l'API de OpenWeatherMap (substitueix YOUR_API_KEY per la teva clau d'API) url <- "http://api.openweathermap.org/data/2.5/weather?q=Barcelona&appid=YOUR_API_KEY&units=metric" # Fer la petició GET resposta <- GET(url) # Comprovar l'estat de la resposta if (status_code(resposta) == 200) { # Convertir la resposta a text resposta_text <- content(resposta, "text") # Parsejar el JSON dades <- fromJSON(resposta_text) # Extreure la temperatura actual temperatura <- dades$main$temp # Mostrar la temperatura print(paste("La temperatura actual a Barcelona és:", temperatura, "°C")) } else { print("Error en la petició") }
Resum
En aquest tema, hem après què són les APIs i com fer peticions a APIs des de R utilitzant el paquet httr
. També hem après a parsejar respostes JSON utilitzant el paquet jsonlite
. Hem practicat amb exemples reals d'ús d'APIs i JSON, i hem realitzat exercicis pràctics per reforçar els conceptes apresos.
En el següent tema, explorarem conceptes avançats de programació en R, incloent la creació de funcions personalitzades i la gestió d'errors.
Programació en R: De Principiant a Avançat
Mòdul 1: Introducció a R
- Introducció a R i RStudio
- Sintaxi Bàsica de R
- Tipus de Dades i Estructures
- Operacions i Funcions Bàsiques
- Importació i Exportació de Dades
Mòdul 2: Manipulació de Dades
- Vectors i Llistes
- Matrius i Arrays
- Data Frames
- Factors
- Manipulació de Dades amb dplyr
- Manipulació de Cadenes
Mòdul 3: Visualització de Dades
- Introducció a la Visualització de Dades
- Gràfics Base de R
- Conceptes Bàsics de ggplot2
- ggplot2 Avançat
- Visualitzacions Interactives amb plotly
Mòdul 4: Anàlisi Estadística
- Estadístiques Descriptives
- Distribucions de Probabilitat
- Proves d'Hipòtesi
- Correlació i Regressió
- ANOVA i Proves de Chi-Cuadrat
Mòdul 5: Gestió Avançada de Dades
- Gestió de Dates i Hores
- Reestructuració de Dades
- Treballant amb Grans Conjunts de Dades
- Web Scraping
- APIs i JSON
Mòdul 6: Conceptes Avançats de Programació
- Escriure Funcions
- Depuració i Gestió d'Errors
- Programació Orientada a Objectes en R
- Programació Funcional
- Computació Paral·lela
Mòdul 7: Aprenentatge Automàtic amb R
- Introducció a l'Aprenentatge Automàtic
- Preprocessament de Dades
- Aprenentatge Supervisat
- Aprenentatge No Supervisat
- Avaluació i Ajust de Models
Mòdul 8: Temes Especialitzats
- Anàlisi de Sèries Temporals
- Anàlisi de Dades Espacials
- Mineria de Text i Processament del Llenguatge Natural
- Bioinformàtica amb R
- Anàlisi de Dades Financeres