Repository navigation
Python en Entorno Profesional ‐ Parte 4
- 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
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()
- 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))
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)
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)
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)
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()
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.
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.
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])
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])
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()
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)
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.
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.
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:
- Uso:
data = read_csv('./app/data.csv')
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])
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.
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.
- 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)
- 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).
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')
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.