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.