[MÚSICA] [MÚSICA] En Pandas, las series nos permiten representar secuencias de datos del mismo tipo, pero para la mayoría de problemas, esto no es suficiente, así que necesitamos un concepto más avanzado, los DataFrames. En este video, veremos qué es un DataFrame, cómo se relacionan los DataFrames y las series y aprenderemos a construir DataFrames a partir de datos en bruto y a partir de archivos CSV. Además, introduciremos el conjunto de datos o dataset que utilizaremos como ejemplo de ahora en adelante en nuestros videos sobre Pandas. Empecemos mirando estos datos sobre los últimos atletas que han tenido el récord mundial de los 100 metros planos. En primer lugar, en esta tabla tenemos varios registros que se ven representados como filas. Además, estos registros están ordenados de acuerdo a la fecha. El primer registro es el más reciente y el quinto es el más antiguo. En segundo lugar, tenemos varias columnas y cada una de esas columnas tiene un nombre y un tipo de datos diferente, varias tienen cadenas de caracteres, una tienen números decimales y una tiene fechas. En Pandas, un DataFrame es la estructura de datos que nos permite representar información como la que tenemos en la tabla, organizada en filas y columnas. Un DataFrame también puede verse como una cantidad de series empaquetadas, una por columna, pero sin la restricción de que todos los datos tengan que ser del mismo tipo. Empecemos entonces a estudiar cómo funcionan los DataFrames en Pandas revisando los cuatro métodos que podemos utilizar para construirlos. La primera forma es a partir de una lista de diccionarios. En la imagen, tenemos cinco diccionarios llamados a1, a2, a3, a4 y a5, en los cuales hemos almacenado la misma información que teníamos en la tabla de récords mundiales. Estos diccionarios tienen una característica muy importante y es que comparten los nombres de las llaves. Todos tienen las mismas cinco llaves llamadas tiempo, atleta, país, fecha y ciudad. A continuación, tenemos una lista llamada récords que contiene los cinco diccionarios. Como última instrucción del ejemplo, estamos creando la variable df_records1 a partir del resultado de invocar la función inicializadora de los DataFrames usando la lista de diccionarios como parámetro. El resultado lo podemos ver en la imagen de abajo a la derecha. Tenemos la misma información que teníamos en la tabla organizada en columnas. Al igual que con las series, a la izquierda podemos ver una columna adicional con los números del 0 al 4, que corresponde al índice del DataFrame. Más adelante estudiaremos más sobre los índices y veremos que es completamente análogo a los índices de las series. La segunda forma de construir un DataFrame es a partir de un diccionario de listas. En este caso, tenemos una lista de valores por cada una de las columnas que queremos tener en nuestro DataFrame. Tenemos una lista con los tiempos, una lista con los nombres de los atletas, una con los países, una con las fechas y una con las ciudades. Finalmente, tenemos un diccionario llamado datos, en el cual hemos organizado las columnas. Cada llave en este diccionario corresponde al nombre de una columna y tiene asociada la lista de valores correspondiente. Para construir el DataFrame tenemos que hacer una invocación a la función inicializadora, similar a la que hicimos en el método pasado. El resultado, como veremos, es idéntico al que obtuvimos con el método pasado. La tercera forma de construir DataFrames es muy similar a la anterior. La diferencia es que en lugar de tener listas con los valores, en este caso tendremos series de valores que organizaremos en un diccionario para construir el DataFrame. En el ejemplo construimos cinco series de pandas y luegolas organizamos en un diccionario que finalmente usamos para usar el DataFrame. Este ejemplo nos muestra lo que dijimos antes, un DataFrame es simplemente un conjunto de series organizadas en columnas. Antes de estudiar el último método para construir DataFrames, hagamos un paréntesis para repasar el concepto de archivo CSV. CSV es un formato estándar, pero extremadamente sencillo, para almacenar información estructurada, Un archivo CSV no es más que un archivo plano donde los valores están organizados por línea y dentro de cada línea están separados por comas. De ahí viene su nombre, CSV significa valores separados por coma. En la imagen podemos ver la información de un archivo CSV en un editor de texto muy sencillo similar al blog de notas disponible en Windows. Es posible que usted you haya trabajado antes con archivos CSV, incluso sin darse cuenta. Muchas veces se construyen, visualizan y manipulan con herramientas similares a Microsoft Excel. Y de hecho es posible convertir archivos en formato Excel o XLSX a formato CSV usando las opciones para exportar que ofrece la herramienta. Sin embargo, debe tener cuidado con una cosa, dentro de un archivo CSV solo pueden almacenarse datos y no puede almacenarse información sobre el formato o la apariencia de los datos. De ahí que cuando abrimos un archivo CSV usando Excel nos encontramos con que todas las columnas tienen el mismo tamaño y el texto aparece con los colores y fuentes predeterminados. El último método para crear un DataFrame es precisamente cargar la información a partir de un archivo CSV. Para esto, simplemente debemos invocar la función read_csv() que está disponible en el módulo de Pandas e indicarle el nombre del archivo que queremos cargar. En este caso, estamos cargando el archivo que vimos en las diapositivas anteriores y el resultado es idéntico al que obtuvimos con los otros métodos. Veamos ahora una pregunta para revisar que todo esté claro. Para concluir este video, vamos a introducir el dataset o conjunto de datos con el que vamos a estar haciendo todas las demostraciones en el resto del módulo. Este dataset lo obtuvimos a través de datos.gov.co, el portal de datos abiertos del estado colombiano, y corresponde a la información almacenada en el sistema llamada SECOP II, en el cual se registra una gran parte de los contratos que el Estado ha suscrito desde el 2012 hasta hoy. A través del portal, pudimos descargar un archivo CSV de casi 650 megas que contiene la información de cerca de 660.000 contratos. Al cargar este dataset a un DataFrame utilizando la función read_csv(), obtuvimos un DataFrame con 54 columnas. En los siguientes videos no usaremos todas estas columnas, así que vamos a aprender ahora mismo cómo quedarnos con solo un conjunto de columnas para trabajar. En primer lugar, necesitamos crear una lista con los nombres de las columnas que nos interesan y que, en este caso, solo serán cuatro. Luego, utilizamos los paréntesis cuadrados con esta lista de columnas para crear un DataFrame que solo tenga esas columnas. Finalmente, en el ejemplo usamos la función copy() para lograr que el DataFrame resultado esté completamente desconectado del DataFrame original. Si no usamos esta función y hacemos algún cambio sobre el DataFrame original, veremos los cambios reflejados en el DataFrame con menos columnas. Use la función copy() con cuidado. Aunque parecería que le puede simplificar las cosas, también puede hacer que sus programas utilicen muchísima más memoria de la que realmente necesitan. Para concluir, recordemos que en este video empezamos a hablar de DataFrames y estudiamos cuatro formas diferentes de crearlos. Las tres primeras formas posiblemente nos sirvan cuando los datos los estemos calculando o generando, pero el último método que carga los datos a partir de un archivo CSV es el más utilizado. Lo que estudiamos al final, es decir, seleccionar un subconjunto de las columnas de un DataFrame también nos será de mucha utilidad durante el resto del curso. Finalmente, recuerden que la documentación de Pandas y de los DataFrames está siempre disponible para su consulta. [MÚSICA]