home / encuestas
En el Centro Cultural CEINA generamos encuestas de satisfacción para nuestros eventos. Para profundizar en el análisis de esta información, desarrollé un script en Python que ayuda a dar formato a los archivos proporcionados por MailerLite y procesa los datos, entregándonos gráficos y análisis útiles.
Objetivos del Proyecto:
Las Encuestas: Para el envío de encuestas utilizamos MailerLite, una plataforma amigable e intuitiva tanto para la creación de encuestas como para la recepción de respuestas. Sin embargo, el formato en que se exportan los datos en CSV puede ser complejo de manejar y analizar directamente.
Para abordar esta necesidad, desarrollé un script en Python utilizando la biblioteca pandas para unir, formatear y limpiar los archivos CSV. Posteriormente, con la ayuda de la biblioteca matplotlib, generamos gráficos que usamos en nuestros informes. El script está diseñado en un notebook de Jupyter para facilitar su compartición y uso.
Características del Script:
matplotlib para crear gráficos informativos y visualmente atractivos.
pip install matplotlib
pip install OS
pip install pandas
import pandas as pd
import os
import matplotlib.pyplot as plt
def unir_excel_en_carpeta(ruta_carpeta, nombre_archivo_salida):
# Obtener la lista de archivos en la carpeta
archivos_excel = [archivo for archivo in os.listdir(ruta_carpeta) if archivo.endswith('.xlsx')]
# Crear un DataFrame vacío para almacenar los datos combinados
df_final = pd.DataFrame()
# Iterar sobre cada archivo en la carpeta
for archivo in archivos_excel:
# Leer el archivo Excel en un DataFrame
df_temporal = pd.read_excel(os.path.join(ruta_carpeta, archivo))
# Obtener el nombre del archivo sin la extensión
nombre_sin_extension = os.path.splitext(archivo)[0]
# Agregar una columna con el nombre del archivo sin extensión
df_temporal.insert(0, 'Evento', nombre_sin_extension)
# Agregar el DataFrame al DataFrame final
df_final = pd.concat([df_final, df_temporal], ignore_index=True)
# Guardar el DataFrame combinado en un nuevo archivo Excel
df_final.to_excel(nombre_archivo_salida, index=False)
print("Archivos combinados exitosamente y guardados en", nombre_archivo_salida)
# Ruta de la carpeta que contiene los archivos Excel
ruta_carpeta = '/Users/julianrudy/Desktop/Encuestas/Excels'
# Nombre del archivo de salida
nombre_archivo_salida = 'datos_combinados.xlsx'
# Llamar a la función para combinar los archivos Excel
unir_excel_en_carpeta(ruta_carpeta, nombre_archivo_salida)
# Cargar el archivos xlsx
archivo_excel = '/Users/julianrudy/Desktop/Encuestas/datos_combinados.xlsx' # Cambia por el nombre de tu archivo Excel
datos = pd.read_excel(archivo_excel)
# Filtro de entradas
filtro_pregunta_enteraste = datos['question'].str.contains('¿Cómo te enteraste del evento?', case=False, na=False)
respuestas_enteraste = datos[filtro_pregunta_enteraste]
# Conteo respuestas
conteo_respuestas_enteraste = respuestas_enteraste['answer'].value_counts()
# Gráfico barras
plt.figure(figsize=(10, 6))
conteo_respuestas_enteraste.plot(kind='bar')
plt.title('Respuestas a "¿Cómo te enteraste del evento?"')
plt.xlabel('Respuestas')
plt.ylabel('Cantidad')
plt.xticks(rotation=45, ha='right')
plt.tight_layout()
plt.show()
# Gráfico pastel
plt.figure(figsize=(8, 8))
conteo_respuestas_enteraste.plot(kind='pie', autopct='%1.1f%%', startangle=140)
plt.title('Distribución de respuestas')
plt.axis('equal')
plt.tight_layout()
plt.show()
# Filtro de entradas
filtro_pregunta_calificar = datos['question'].str.contains('¿Cómo calificarías la función?', case=False, na=False)
respuestas_calificar = datos[filtro_pregunta_calificar]
# Conteo respuestas
conteo_respuestas_calificar = respuestas_calificar['answer'].value_counts()
# Gráfico barras
plt.figure(figsize=(10, 6))
conteo_respuestas_calificar.plot(kind='bar')
plt.title('Respuestas a "¿Cómo calificarías la función?"')
plt.xlabel('Respuestas')
plt.ylabel('Cantidad')
plt.xticks(rotation=45, ha='right')
plt.tight_layout()
plt.show()
# Gráfico pastel
plt.figure(figsize=(8, 8))
conteo_respuestas_calificar.plot(kind='pie', autopct='%1.1f%%', startangle=140)
plt.title('Distribución de respuestas')
plt.axis('equal')
plt.tight_layout()
plt.show()
Este proyecto ha tenido un impacto significativo en la forma en que analizamos y comprendemos la satisfacción de nuestro público en el Centro Cultural CEINA. La automatización del proceso de análisis de encuestas no solo ha ahorrado tiempo y recursos, sino que también ha mejorado la precisión y profundidad de nuestros informes. Al entender mejor las preferencias y comportamientos de nuestros visitantes, hemos podido ajustar nuestras estrategias de comunicación y programación de eventos, resultando en una mayor satisfacción y participación del público. La implementación de este script en Python destaca la importancia de utilizar herramientas tecnológicas avanzadas para la gestión y mejora continua de nuestras actividades culturales.