Extracción y Visualización de Datos con Python: Repositorios GitHub y Calidad del Aire
Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones
Escrito el en español con un tamaño de 6,93 KB
Ejercicio 1: Explorando Repositorios de Python en GitHub
Este ejercicio demuestra cómo interactuar con la API de GitHub para buscar y extraer información sobre repositorios, utilizando la biblioteca requests
de Python.
Código y Explicación
import requests
url = "https://api.github.com/search/repositories?q=language%3Apython&sort=stars&order=desc&per_page=5"
headers = {'Accept': "application/vnd.github.v3+json"}
r = requests.get(url, headers=headers)
print(f'Status code: {r.status_code}')
response_dict = r.json()
print(f"Total repositories: {response_dict['total_count']}")
repo_dicts = response_dict["items"]
print("\nInformación seleccionada sobre los repositorios:")
for repo_dict in repo_dicts:
print(f"\nName: {repo_dict['name']}")
print(f"Owner: {repo_dict['owner']['login']}")
print(f"Stars: {repo_dict['stargazers_count']}")
print(f"Repository: {repo_dict['html_url']}")
print(f"Created: {repo_dict['created_at']}")
print(f"Updated: {repo_dict['updated_at']}")
print(f"Description: {repo_dict['description']}")
- Importación de
requests
: Importamos la bibliotecarequests
para realizar solicitudes HTTP. - Definición de la URL: La variable
url
contiene la dirección de la API de GitHub. Buscamos repositorios de Python, ordenados por estrellas (de mayor a menor) y limitados a 5 resultados. - Cabeceras (Headers):
headers
especifica que la respuesta debe estar en formato JSON (versión 3 de la API de GitHub). - Solicitud GET:
requests.get()
envía una solicitud GET a la URL. La respuesta se guarda en la variabler
. - Código de Estado:
r.status_code
muestra el código de estado HTTP de la respuesta (200 indica éxito). - Conversión a JSON:
r.json()
convierte la respuesta JSON en un diccionario de Python. - Total de Repositorios: Se imprime el número total de repositorios encontrados (
total_count
). - Extracción de la Lista de Repositorios: La clave
'items'
contiene la lista de repositorios, que se guarda enrepo_dicts
. - Iteración y Extracción de Datos: El bucle
for
itera sobre cada repositorio enrepo_dicts
y extrae información específica (nombre, propietario, estrellas, URL, fechas de creación y actualización, y descripción).
Ejercicio 2: Calidad del Aire - Extracción y Análisis con Pandas
Este ejercicio muestra cómo cargar, procesar y analizar datos de calidad del aire utilizando la biblioteca pandas
en un entorno de Google Colab, accediendo a datos almacenados en Google Drive.
Montaje de Google Drive y Carga de Datos
from google.colab import drive
drive.mount('/content/drive')
import pandas as pd
PATH = 'content/drive/MyDrive/CalidadAire/data/'
df_global = pd.read_csv(PATH + 'global air pollution dataset.csv')
print(df_global)
- Montaje de Google Drive:
from google.colab import drive
: Importa la funcióndrive
para interactuar con Google Drive.drive.mount('/content/drive')
: Monta la unidad de Google Drive en el sistema de archivos de Colab, permitiendo el acceso a los archivos.
- Importación de Pandas:
import pandas as pd
importa la bibliotecapandas
para el análisis de datos. - Definición de la Ruta: La variable
PATH
almacena la ruta al directorio donde se encuentra el archivo CSV. - Carga del Dataset:
pd.read_csv()
lee el archivo CSV y lo carga en un DataFrame de pandas llamadodf_global
. - Visualización del DataFrame:
print(df_global)
muestra el contenido del DataFrame.
Filtrado y Limpieza de Datos
spain_cities = df_global.loc[df_global['Country'] == 'Spain']
print(spain_cities)
treated_df = spain_cities.copy(deep=True).drop(['AQI Category', 'CO AQI Category', 'Ozone AQI Category', 'NO2 AQI Category', 'PM2.5 AQI Category'], axis=1)
print(treated_df)
- Filtrado por País: Se crea un nuevo DataFrame,
spain_cities
, que contiene solo las filas correspondientes a España. - Eliminación de Columnas: Se eliminan las columnas categóricas (
AQI Category
,CO AQI Category
, etc.) del DataFramespain_cities
, creando una copia profunda (deep=True
) para evitar modificaciones en el DataFrame original. Se utilizaaxis=1
para indicar que se están eliminando columnas.
Análisis Estadístico y Selección de Datos
media = treated_df['AQI Value'].mean()
print("Media:", media)
highest_air_quality = treated_df.nlargest(50, 'AQI Value')
print(highest_air_quality)
highest_ozono = highest_air_quality.nlargest(10, 'Ozone AQI Value')
print(highest_ozono)
lowest_ozono = highest_air_quality.nsmallest(10, 'Ozone AQI Value')
print(lowest_ozono)
valor_medio_absoluto = abs(highest_air_quality['PM2.5 AQI Value']).mean()
media = int(valor_medio_absoluto)
df_ordenado = highest_air_quality.iloc[(highest_air_quality['PM2.5 AQI Value']- media).abs().argsort()]
filas_cercanas = df_ordenado.head(5)
print(filas_cercanas)
- Cálculo de la Media: Se calcula la media de la columna 'AQI Value' del DataFrame
treated_df
. - Ciudades con Mayor AQI:
nlargest(50, 'AQI Value')
selecciona las 50 filas con los valores más altos de 'AQI Value'. - Ciudades con Mayor y Menor Ozono: Se seleccionan las 10 ciudades con mayor y menor 'Ozone AQI Value' dentro del grupo de las 50 ciudades con mayor AQI.
- Cálculo de la Media Absoluta de PM2.5 y Selección de Filas Cercanas:
valor_medio_absoluto = abs(highest_air_quality['PM2.5 AQI Value']).mean()
: Calcula la media del valor absoluto de la columna 'PM2.5 AQI Value'.media = int(valor_medio_absoluto)
: Convierte la media a un entero.df_ordenado = highest_air_quality.iloc[(highest_air_quality['PM2.5 AQI Value']- media).abs().argsort()]
: Ordena las filas del DataFramehighest_air_quality
según la diferencia absoluta entre sus valores de 'PM2.5 AQI Value' y la media calculada.filas_cercanas = df_ordenado.head(5)
: Selecciona las 5 primeras filas (las más cercanas a la media).