Análisis de costo de consumo eléctrico con Python y Tableau

Hello! and thank you for dropping by! If you would like to take a peek of project and the viz in English, please click in the next buttons:

El análisis de datos con Python se ha vuelto popular en los últimos años gracias a la versatilidad que nos brinda este lenguaje para resolver distintos problemas relacionados con el tratamiento de grandes cantidades de datos.

Analizar un set de datos puede volverse una tarea difícil si la información fue recopilada de manera incorrecta.

En este caso, tenemos un dataset con múltiples inconvenientes de captación.

  • La información sobre hora, fecha y kwh consumidos, fueron recopilados como un único valor de cadena o str.
  • El formato de fecha incluye terminaciones para unos días, y para otros no.
  • No existe un separador único para cada segmento de información, tenemos ‘espacios’, ‘-‘ y ‘_’.

Además, contamos con otras tablas en donde se especifica el costo de la electricidad según una tarifa fija, una basada en horas y otra en mes de consumo, las cuales deberemos utilizar para realizar ciertos cálculos.

¿Qué buscamos conseguir con este análisis con python?

Es imposible utilizar la información del dataset tal como está y limpiar los datos de forma manual sería una tarea innecesariamente larga.

Necesitamos conocer el consumo de energía tanto por día como por horas. Luego, deberemos calcular el costo fijo, por hora y mensual según cada tarifa.

Finalmente, necesitaremos interpretar y visualizar los resultados para tomar decisiones.

análisis con python sobre costo energetico, visualizacion en tableau

Python, pandas y RegEx salvan el día

Si bien es posible realizar la tarea con Excel o SQL (lo se, porque también lo hice 😀), la solución que se consigue con Python es mucho más rápida, sencilla y replicable en caso de contar con cientos de miles o millones de registros (el talón de Aquiles de Excel).

Para el análisis con Python, la librería Pandas nos permite tratar datos fácilmente y las expresiones regulares (RegEx) facilitan extraer información de cadenas de datos mediante patrones.

Mira el código del proceso completo de limpieza de este interesante dataset. Lo realice en Jupyter notebook, desde Google Colab.

Note: All the process is commented in english to make it easy for the data analysis community to read.

Highlights de este análisis con python

  • A diferencia de Excel o SQL, el corazón de la extracción de información en Python se puede resumir a una sola línea de código
    pattern=re.compile(r'[\s*|_*]*(\d+\s?[AM|PM]+)\s*\w*\s*(\d+\w*-\w{3}-\d{4})[_]+(\d\.\d+)’)
  • Un patrón único puede fallar si algún dato no responde al patrón. Esto ocurrió con 1125 registros de fechas. Una solución simple fue extraer la fecha con el mismo patrón, pero por separado.
  • Una buena práctica es verificar si se generan NaN values luego de cada proceso.

Interpretación de resultados con Tableau

Una vez tratados y estandarizados los datos, podemos pasar a su interpretación. Para esto he elegido Tableau como herramienta de visualización.

Gracias a Tableau Public, podemos insertar el código HTML de la visualización directamente en esta web, y la gráfica es completamente dinámica.

De la gráfica podemos concluir lo siguiente:

  • El mes de mayor consumo es julio. El pico puede estar relacionado a que en verano se utiliza A/C lo que incrementa el consumo de electricidad.
  • Las horas de mayor consumo van desde las 6 a 8 PM.
  • A simple vista, parecería que la tarifa por mes es la más costosa debido al pico que tiene en el mes de junio y julio, sin embargo, si se suma el costo de todo el año, la tarifa fija es ligeramente más costosa.
  • La mejor tarifa es la establecida por horas. Si bien esta tarifa es más costosa en horas de alta demanda, lo compensa durante las horas de menor consumo, especialmente durante el verano cuando el consumo energético es mayor.

Power BI y SQL como alternativas a Tableau y Python

Power BI es también una opción interesante de visualización, sin embargo, no permite compartir las visualizaciones de forma interactiva y pública, ese es un servicio exclusivo para usuarios de Power BI.

Puedes ver una imagen del resultado final en Power BI en Github (ver imagen Power BI), el resultado que se consigue con esta herramienta es igual de bueno.

En cuanto a SQL, es sin duda un programa excelente para realizar EDA y arreglos en dataframes de mucho volumen, pero para este ejercicio de limpieza de valores tipo cadena, python cumple con la tarea de forma mucho más rápida y con prácticamente una sola línea de código.

Si quieres mirar también el proceso de limpieza del dataframe utilizando SQL server, puedes ir a este enlace del repositorio de Github (ver código SQL).

¿Buscas un analista de datos? Contáctame

Whatsapp: +593 97 907 2682
Email: contact@ivan-condor.com