Skip to content

Python en Entorno Profesional ‐ Parte 4

Tatiana Tamara, Giménez Ríos edited this page Nov 13, 2023 · 1 revision

Python en Entorno Profesional -> Parte 4

Paquete app

Clase Main.py

Clase Python de Análisis de Población y Gráficos

  • Resumen

Esta clase de Python realiza un análisis simple de datos de población de países, leídos desde un archivo CSV, y genera gráficos de pastel y de barras utilizando los módulos utils, read_csv, y charts. Permite al usuario seleccionar un continente (en este caso, 'South America') y luego ingresar un país específico para obtener información detallada sobre la población de ese país.

  • Módulos Utilizados

  • utils

Descripción: Módulo que contiene funciones útiles para el análisis de datos, especialmente para el cálculo de estadísticas de población.

import utils

  • read_csv

Descripción: Módulo que proporciona funcionalidades para leer archivos CSV y manipular datos.

import read_csv

  • charts

Descripción: Módulo encargado de generar gráficos, como gráficos de pastel y de barras.

import charts

Funciones Principales

run()

Descripción: Función principal que orquesta el flujo del programa. Lee datos de un archivo CSV, filtra los países de un continente específico ('South America'), genera un gráfico de pastel, solicita al usuario ingresar un país y muestra información detallada sobre la población de ese país.

Uso:

run()

Flujo del Programa

  • Lectura de Datos y Filtrado

Descripción: Lee datos desde un archivo CSV y filtra los países del continente especificado ('South America').

data = read_csv.read_csv('./data.csv') data = list(filter(lambda item: item['Continent'] == 'South America', data))

Generación de Gráfico de Pastel

Descripción: Utiliza el módulo charts para generar un gráfico de pastel basado en los porcentajes de población de los países filtrados.

charts.generate_pie_chart(countries, percentages)

Consulta y Visualización de Datos de País Específico

Descripción: Solicita al usuario ingresar un país y muestra información detallada sobre la población de ese país utilizando funciones del módulo utils.

country = input('Type Country =>') result = utils.population_by_country(data, country)

Generación de Gráfico de Barras para el País Específico

Descripción: Si se encuentra información para el país ingresado, utiliza el módulo charts para generar un gráfico de barras basado en la población del país.

labels, values = utils.get_population(country) charts.generate_bar_chart(country['Country'], labels, values)

Ejecución del Programa

if name == 'main': Descripción: Verifica si el script se está ejecutando como un programa independiente y no se ha importado como un módulo. En caso afirmativo, ejecuta la función run().

if name == 'main': run()

Notas

El código utiliza funciones lambda y funciones de alto orden (como filter y map) para realizar operaciones en los datos de manera concisa. Los gráficos se generan utilizando funciones del módulo charts, que presumiblemente tiene implementaciones específicas para gráficos de pastel y de barras.

Esta clase proporciona una estructura modular para realizar análisis básicos de datos de población y generar gráficos.

Clase charts.py - Generación de Gráficos con Matplotlib

El módulo charts proporciona funciones para generar gráficos utilizando la biblioteca Matplotlib en Python. Actualmente, el módulo contiene dos funciones: generate_bar_chart y generate_pie_chart, ambas diseñadas para crear gráficos de barras y gráficos circulares (de pastel), respectivamente.

Funciones

generate_bar_chart(name, labels, values)

Descripción: Genera un gráfico de barras a partir de las etiquetas y valores proporcionados y guarda la imagen en un archivo PNG en el directorio './imgs/' con el nombre especificado.

  • Parámetros:
  • name: Nombre del archivo de imagen a guardar (sin extensión).
  • labels: Lista de etiquetas para el eje x del gráfico.
  • values: Lista de valores para el eje y del gráfico.

Uso:

generate_bar_chart('bar_chart', ['Label1', 'Label2', 'Label3'], [10, 20, 30])

generate_pie_chart(labels, values)

Descripción: Genera un gráfico circular (de pastel) a partir de las etiquetas y valores proporcionados y guarda la imagen en un archivo PNG en el directorio actual.

Parámetros:

  • labels: Lista de etiquetas para el gráfico circular.
  • values: Lista de valores para el gráfico circular.

Uso:

generate_pie_chart(['Slice1', 'Slice2', 'Slice3'], [40, 30, 20])

Detalles de Implementación

plt.subplots()

  • Descripción: Crea una figura y un conjunto de subgráficos. Retorna una tupla que contiene la figura y los ejes (ax).

fig, ax = plt.subplots() ax.bar(labels, values)

  • Descripción: Añade barras al gráfico de barras con las etiquetas y valores proporcionados.

ax.bar(labels, values) ax.pie(values, labels=labels)

  • Descripción: Crea un gráfico circular (de pastel) con los valores y etiquetas proporcionados.

ax.pie(values, labels=labels) ax.axis('equal')

  • Descripción: Establece el aspecto del gráfico circular como circular (para evitar distorsiones).

ax.axis('equal') plt.savefig(filename)

  • Descripción: Guarda la figura actual en un archivo con el nombre especificado y en el formato proporcionado (en este caso, PNG).

plt.savefig(filename) plt.close()

  • Descripción: Cierra la figura actual para liberar recursos. Es importante cerrar la figura después de guardarla.

plt.close()

Ejemplo de Uso

if name == 'main':

  • Descripción: Verifica si el script se está ejecutando como un programa independiente y no se ha importado como un módulo. En caso afirmativo, ejecuta un ejemplo de uso con datos de muestra.

if name == 'main': labels = ['a', 'b', 'c'] values = [10, 40, 800] generate_pie_chart(labels, values)

Notas Adicionales

El módulo utiliza la biblioteca Matplotlib para la generación de gráficos. Asegúrate de tener Matplotlib instalado para ejecutar este código. Ambas funciones de generación de gráficos tienen la capacidad de personalizar los gráficos según las necesidades del usuario mediante la manipulación de los parámetros de entrada.

Este módulo proporciona una interfaz sencilla para la generación de gráficos de barras y gráficos circulares utilizando Matplotlib en aplicaciones de análisis de datos en Python.

Clase read_csv - Lectura de Archivos CSV en Python

El módulo read_csv proporciona una función para leer datos desde un archivo CSV y convertirlos en una lista de diccionarios en Python. Cada diccionario representa una fila de datos, donde las claves son los encabezados del archivo CSV y los valores son los datos correspondientes.

Funciones

read_csv(path)

  • Descripción: Lee un archivo CSV desde la ruta proporcionada y retorna una lista de diccionarios donde cada diccionario representa una fila de datos.
  • Parámetros:
  • path: Ruta del archivo CSV a leer.
  • Retorno:

Lista de diccionarios.

  • Uso:

data = read_csv('./app/data.csv')

Detalles de Implementación

with open(path, 'r') as csvfile:

  • Descripción: Abre el archivo CSV en modo lectura utilizando un contexto with, asegurando que el archivo se cierre correctamente después de la lectura.

with open(path, 'r') as csvfile: reader = csv.reader(csvfile, delimiter=',')

  • Descripción: Crea un objeto lector de CSV utilizando la biblioteca csv, especificando que el delimitador es la coma.

reader = csv.reader(csvfile, delimiter=',') header = next(reader)

  • Descripción: Lee la primera fila del archivo CSV, que generalmente contiene los encabezados, y almacena los encabezados en la variable header.

header = next(reader)

for row in reader:

  • Descripción: Itera sobre las filas restantes del archivo CSV.

for row in reader: iterable = zip(header, row)

  • Descripción: Combina los encabezados con los datos de la fila actual para formar pares clave-valor.

iterable = zip(header, row) country_dict = {key: value for key, value in iterable}

  • Descripción: Crea un diccionario a partir de los pares clave-valor obtenidos, representando una fila de datos.

country_dict = {key: value for key, value in iterable} data.append(country_dict)

  • Descripción: Agrega el diccionario creado a la lista data, que almacenará todos los datos del archivo CSV.

data.append(country_dict) return data

  • Descripción: Retorna la lista de diccionarios que representa los datos del archivo CSV.

return data

  • Ejemplo de Uso

if name == 'main':

  • Descripción: Verifica si el script se está ejecutando como un programa independiente y no se ha importado como un módulo. En caso afirmativo, lee el archivo CSV y muestra la primera fila de datos.

if name == 'main': data = read_csv('./app/data.csv') print(data[0])

Notas Adicionales

Este módulo utiliza la biblioteca estándar de Python, csv, para facilitar la lectura de archivos CSV. Los datos se estructuran en una lista de diccionarios, lo que facilita el acceso a los datos utilizando las claves correspondientes a los encabezados del archivo CSV.

Clase util.py

Funciones de Análisis de Población

Este conjunto de funciones proporciona herramientas para analizar datos de población de países representados en diccionarios. Estos diccionarios generalmente provienen de la lectura de archivos CSV, como se describe en el módulo read_csv.

Función get_population(country_dict)

  • Descripción

Esta función toma un diccionario que representa datos de población de un país específico y extrae la información de población para varios años clave. Luego, organiza esta información en dos listas: una para las etiquetas (años) y otra para los valores (población correspondiente a cada año).

  • Parámetros

country_dict: Un diccionario que contiene datos de población para un país específico.

  • Retorno Un par de listas, donde la primera lista contiene las etiquetas (años) y la segunda lista contiene los valores correspondientes (población).

  • Ejemplo de Uso

country_data = { 'Country': 'Exampleland', '2022 Population': '1000000', '2020 Population': '950000', '2015 Population': '800000', # ... Otros años ... }

labels, values = get_population(country_data)

Función population_by_country(data, country)

  • Descripción

Esta función filtra una lista de diccionarios (presumiblemente representando datos de múltiples países) para devolver solo la entrada correspondiente al país específico proporcionado.

  • Parámetros

  • data: Una lista de diccionarios que contienen datos de población de varios países.

  • country: El nombre del país para el cual se desea obtener información de población.

  • Retorno

Una lista que contiene un diccionario (o una lista vacía si no se encuentra ninguna coincidencia).

Ejemplo de Uso

population_data = [ {'Country': 'Exampleland', '2022 Population': '1000000', '2020 Population': '950000', ...}, {'Country': 'Anotherland', '2022 Population': '1200000', '2020 Population': '1100000', ...}, # ... Otros países ... ]

result = population_by_country(population_data, 'Exampleland')

Notas Adicionales

Estas funciones son útiles en un contexto donde se trabaja con datos de población y se requiere un análisis específico para un país o una comparación entre países.

La función get_population proporciona un formato conveniente para visualizar la población a lo largo de varios años.

Clone this wiki locally