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']}")

  1. Importación de requests: Importamos la biblioteca requests para realizar solicitudes HTTP.
  2. 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.
  3. Cabeceras (Headers): headers especifica que la respuesta debe estar en formato JSON (versión 3 de la API de GitHub).
  4. Solicitud GET: requests.get() envía una solicitud GET a la URL. La respuesta se guarda en la variable r.
  5. Código de Estado: r.status_code muestra el código de estado HTTP de la respuesta (200 indica éxito).
  6. Conversión a JSON: r.json() convierte la respuesta JSON en un diccionario de Python.
  7. Total de Repositorios: Se imprime el número total de repositorios encontrados (total_count).
  8. Extracción de la Lista de Repositorios: La clave 'items' contiene la lista de repositorios, que se guarda en repo_dicts.
  9. Iteración y Extracción de Datos: El bucle for itera sobre cada repositorio en repo_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)

  1. Montaje de Google Drive:
    • from google.colab import drive: Importa la función drive 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.
  2. Importación de Pandas: import pandas as pd importa la biblioteca pandas para el análisis de datos.
  3. Definición de la Ruta: La variable PATH almacena la ruta al directorio donde se encuentra el archivo CSV.
  4. Carga del Dataset: pd.read_csv() lee el archivo CSV y lo carga en un DataFrame de pandas llamado df_global.
  5. 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)

  1. Filtrado por País: Se crea un nuevo DataFrame, spain_cities, que contiene solo las filas correspondientes a España.
  2. Eliminación de Columnas: Se eliminan las columnas categóricas (AQI Category, CO AQI Category, etc.) del DataFrame spain_cities, creando una copia profunda (deep=True) para evitar modificaciones en el DataFrame original. Se utiliza axis=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)

  1. Cálculo de la Media: Se calcula la media de la columna 'AQI Value' del DataFrame treated_df.
  2. Ciudades con Mayor AQI: nlargest(50, 'AQI Value') selecciona las 50 filas con los valores más altos de 'AQI Value'.
  3. 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.
  4. 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 DataFrame highest_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).

Entradas relacionadas: