Codea Blog  

Blog Details

PandasGUI versión CODEa UNI

Hace un tiempo recibí la llamada de un amigo pidiéndome como puedo manipular archivos csv extensos que normalmente no se pueden editar con Excel, y al mismo tiempo sin tener la necesidad de implementar código. Esto me dejó pensando, ya que, honestamente, no tenía alguna herramienta a la mano que recomendar. Dentro de los días próximos investigando, noté que hay varios intentos de crear ecosistemas visuales para usar la potencia de pandas como Qgrid, pivottablejs, PandasGUi, Tabloo, D-tale, Pyxll (de pago) y xlwings (de pago). Todas cuenta con gran potencial para poyarnos en nuestras tareas de limpieza y exploración de datos, claramente algunos mejores que otros.

 

De todas las opciones, me centré en PandasGUI, pues a mi parecer es el que mejor se ajusta a un análisis completo de los datos –como comenté– sin tener que usar código (al menos solo un poco).

 

De todos modos, para usarlo tienes que instalar la librería, recomendablemente, en un entorno nuevo (esto para evitar conflictos de versiones entre las dependencias internas y tratando de usar versiones sobre la 3.8 del intérprete de Python).

 

Recomendación: crea el entorno y procura que lo primero que instales sea la librería pandasgui, ya que internamente instalará todas las dependencias que necesita para funcionar perfectamente.

Comando: pip install pandasgui

 

PandasGUI – CODEaUNI

Entendido ello, ahora vamos a detallar un poco de esta librería.

 

Arrastra tus archivos

Lo primero a notar es que tenemos una zona donde nos permite cargar los files simplemente arrastrándolos. Cabe resaltar que solo puede cargar las extensiones: csv, xlsx, parquet, json y seguramente algunos compatibles con estos formatos.

También puedes usar en la barra del menú – Edit – importar.

 

 

Visualización, filtrado y edición

Una vez que cargaste el DataFrame (tu tabla) de cualquiera de las fuentes mencionadas anteriormente, se carga un área muy parecida a Excel, en esta podrás filtrar y editar los registros que gustes manualmente.

 

 

Estadistics

En esta sección podrás encontrar un resumen estadístico de los datos cargado, y ten en cuenta que si aplicas filtro esta estadística será solo de los datos filtrados (claro generalmente es lo que se quiere)

 

 

Grapher

En esta sección explotamos la potencia plotly, la cual es una librería usada para generar gráficos de alto nivel con poco código – dashboards. Esta toma los datos filtrados o totales –según sea el caso– y, de manera dinámica, nos frece un abanico de gráficos muy estilados. Aunque la primera vez que te encuentras con las opciones puede que no sepas para qué es cada una, al poco tiempo terminas de entender con un poco de prueba y error (ello claro si no deseas leer la documentación).

 

 

Reshaper

Esta opción es mágica y encontrarás todo lo que buscaba mi amigo –como bien dicen, mejor tarde que nunca–. Lo primero que tenemos son las opciones para crear resúmenes de los datos Pivot que funciona exactamente igual que tablas dinámicas que Excel (solo que un poco menos dinámico) y finalmente las operaciones rey de pandas merge (unión vertical) y concat (unión horizontal). Estos últimos los explicaré con más detalle en un próximo post, o pueden verlo en la documentación oficial.

 

 

Pero, si bien la herramienta se ejecuta con 2 líneas de código, se tiene que hacer una ambientación previa, lo que podemos obviar si empaquetamos y generamos un ejecutable que levante todos los recursos que se necesitan con un solo click.

 

Personalizándolo

 

Ahora sí empieza lo bueno. Para iniciar, antes de generar el ejecutable, tenemos que entender el proyecto de otro desarrollador y esto es bastante cansado pero emocionante para los que disfrutamos de estas tareas.

 

Si bien la herramienta es excelente, encontré algunos pequeños problemas al trabajarlo con modelos de bloques –para los que no están en minería, tablas– bastante extensos. El primero es el tiempo de carga, que es bastante prolongado, pero menos que Excel. Segundo, cada vez que se hacía la edición de un registro demoraba mucho (esto solo para tablas muy extensas de más de 1 millón de registros). Esto es porque forzaba una actualización global de la tabla, lo que destruía el performance; explicado de otra forma, imagínate recargar y reconstruir visualmente cada registro en cada celda –hablando muy superficialmente–. Tercero, si piensas en Excel, te cuestionas ¿por qué este no puede cargar un número de registros bastante extensos de manera fluida? Es porque tiene una interfaz que mostrar –sí las interfaces gráficas son costosa, extremadamente costosas–.

 

Entonces, dije ¿por qué ver todos los registros? Piénsenlo, si solo me centro en los que quiero editar como un filtro, pero no siendo un filtro sino como un control para centrarme visualmente en un grupo de registros. Esto me llevó a crear una nueva área en el PandasGUI original, un visor que mejora el performance haciendo que la edición y la actualización de los cambios se hagan sin tener que recargar la página y sin parpadeos de la pantalla.

 

Todos estos cambios en el código tomaron varias horas de trabajo, pero creo que tenemos una versión bastante estable, aunque ustedes lo decidirán en la práctica.

 

 

Finalmente, para concluir esta primera versión de PandasGUI – CODEaUNI, tenemos que cerrar con broche de oro, crear nuestro ejecutable que puedes descargar y usar libremente. De todos modos, esperamos sus comentarios y recomendaciones para poder mejorar este ejecutable, de modo que sea la herramienta que necesitamos todos los que gustamos de hacer exploración de datos sin código –muchas veces me incluyo–.

 

  DESCARGAR INSTALADOR  

 

Gracias, nos veremos en otro momento en un próximo post y en futuras versiones con más implementaciones que enriquezcan el ya genial PandasGUI.

 

Nota: ya tenemos mapeado más mejoras a implementar –humilde opinión, mejoramos performance quitando interactividad sin quitar funcionalidad–. Poco a poco lanzaremos estas actualizaciones solo si a ustedes les parece que vale la pena.

 

Comentarios

  • Reviews
    Yovanni
    Jul. 25, 2022, 11:21 p.m.

    Excelente aporte, muy practico y funcional. Le agradezco todo el tiempo invertido en crear este contenido y la aplicación, en poner tiempo esfuerzo y conocimientos al servicio de otros.

    • Reviews
      clint
      Ago. 13, 2023, 9:59 a.m.

      Gracias

Registrate o Inicia Sesión para comentar y obtener Cursos de pago gratis

function loadurl(){ var val1 = document.getElementById("valor3").value; console.log(val1); if(val1){ window.location = "/comunidad/blog/filtrar/"+val1+"/"} }