Del Excel a MongoDB: Como proceso los datos
Tags: python, mongodb, spanish
Published: 2023-09-14 18:39:59

En gobierno normalmente la gran mayoría de las personas ocupan archivos de #Excel como un tipo de archivo maestro en donde guardan toda su información (sin respaldos), ellos le llaman una base de datos, pero nosotros sabemos que esto difiere bastante de la realidad. Bueno el otro día nos dijeron que el equipo de TI de la dependencia en la que trabajo ayudará a crear un sistema para llevar el control de algunos inmuebles.

Bueno lo interesante de acá es que sus datos, todos, TODOS, los tienen dentro de un archivo de Excel, para esto lo que necesitábamos hacer es transformar esos datos y pasarlos a sentencias de base de datos en este caso MongoDB para empezar a construir el sistema con un control de usuarios, y que ellos ahora ya pudieran administrar los datos desde una plataforma unificada.

Para el procesamiento de archivos creo que la herramienta predilecta es ocupar el lenguaje de programación de #Python, ya que proporciona interfaces de alto nivel a través de la librería de Pandas, para que te preocupes por lo que verdaderamente importa, que es revisar que tus datos sean transformados de manera consistente y también que no se tenga algún tipo de error. Este tipo de transformaciones las hago regularmente en el ambiente de desarrollo de #Google #Colab, ya que es un entorno en línea y sin necesidad de tener un IDE directo en mi computadora.

Bueno lo primero que tuve que revisar es de que naturaleza de datos nos estábamos enfrentando, para algunos datos por ejemplo son de tipo entero, otros de tipo fecha y algunos otros de tipo decimal. La forma en como yo lo hago es de la siguiente manera, primero se lee el archivo de Excel y se obtiene acceso a los datos dentro del mismo, posteriormente se recorre fila a fila los datos y se van agregando a un diccionario con las propiedades que se van a guardar dentro de la base de datos, en este caso eran al rededor de 27 características, lo interesante del documento para mongo es generar la estructura para posteriores consultas.


![Carga de archivo](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lzo9qfairaaynkia37nj.png)


![Ejemplo de diccionario](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2dyihkkgro58zu8ba1gi.png)

Lo mas tiempo te va a llevar haciendo este tipo de procesamiento es que como esta en un archivo que es muy susceptible a fallas por parte de la o las personas que lo rellenan los datos no son homogéneos e incluso hay datos faltantes, es por ello que tienes que formar el JSON para MongoDB con los datos vacíos, sin que tengas datos con nan, na o null por ejemplo y se tiene que sustituir con una cadena vacía o con un cero depende el tipo de datos que ya previamente habíamos analizado.

El resultado final nos debería de quedar algo similar a esto. En donde nosotros generamos el ObjectId, verificamos que los campos de fecha sean de tipo ISODate y que sigan el patrón correcto de fecha admitido por MongoDB, así como también los campos de Decimal128 sean correctos y los que son campos numéricos que realmente sean números y no cadenas de caracteres. Lo bonitos de Colab es que puedes generar los archivos de salida dentro de la misma plataforma y visualizar si el resultado final cuenta con las características que tu realmente necesitas.


![Ejemplo de JSON](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/77d0ow247e19wipt05vm.png)

Esta es la forma en la que trabajo y como es que paso de archivos de Excel a una base de datos para construir un sistema, con control de usuarios y demás cosas que son necesarias para administrar los datos de un flujo de trabajo.