Blog
Importar múltiples archivos en Python con Pandas
- Publicado por: Rafael Fernandez
- Categoría: Analisis de datos Blog Nivel Intermedio Python
Glob es un término comúnmente empleado para describir la expansión o la coincidencia de los valores devueltos cuando se utilizan expresiones regulares o coincidencias de patrones. Cada vez que quieras operar con un grupo de archivos que tengan nombres similares, puedes usar un patrón Glob para hacerlo. Globbing es un término técnico que se utilizar para comparar archivos por nombre o tipo de archivo. Es un tipo de patrón que coincide con los nombres de los archivos. En Pyhton, para realizar Globbing, necesitamos importar el siguiente paquete.
import glob
Cuándo puedo utilizar la función Glob?
Imagina que tienes datos almacenados en diferentes archivos diariamente y quieres leer estos archivos en forma de Data Frame para así poder analizarlos y concatenarlos más adelante. En tal situación, puede utilizar la función glob para encontrar ficheros basados en patrones sin tener que realizarlo manualmente.
Normalmente, se puede usar comodines para especificar el patrón que estamos buscando. Un comodín es un símbolo que coincide con cualquier número arbitrario de caracteres. Entre dichos comodines, podemos encontrar: el asterisco * es un tipo de comodín que coincide con cualquier cadena, o el signo ? que sólo nos permitirá hacer coincidir un personaje. Este carácter puede ser cualquier número entre 0-9 o cualquier letra entre A-Z. Con unos ejemplos, te será más fácil entenderlo:
- ‘*.csv ‘ hará coincidir cualquier archivo que tenga formato csv
- archivo_??.csv ‘ coincidirá con un archivo que comienza con un nombre ‘archivo’, luego un guión bajo y luego cualquier carácter individual seguido de una extensión csv.
La función glob devolverá una lista de nombres de archivos Python que coinciden con el patrón. A continuación, podemos utilizar esta lista para concatenar varios Data Frames en un solo Data Frame. Usaremos la función glob para buscar todos los archivos csv proporcionando un patrón: *.csv
Disponemos 3 archivos csv, en los cuales cada archivo tiene datos del historial de compras de varios clientes para un día en particular y el nombre del archivo indica la fecha de compra. Primero vamos a importar cada archivo por separado y para que veas los datos contenidos en él.
#Importar librería Pandas import pandas as pd df_14 = pd.read_csv('14rd_jan18.csv') df_14 df_15 = pd.read_csv('15rd_jan18.csv') df_15 df_16 = pd.read_csv('16th_jan18.csv') df_16
Este sería el Ouput que tenemos:
Nombre | Item | Cantidad | |
---|---|---|---|
0 | María | Pelota tenis | 200 |
1 | Pedro | Gorra | 340 |
2 | Rafael | Bate béisbol | 2300 |
3 | Eva | Guantes | 345 |
Podemos evitar esta repetición de la lectura de cada archivo csv utilizando el método glob, tal y como se describe a continuación:
# Primero especificamos un patrón del archivo y lo pasamos como parámetro en la función glob csv_files = glob.glob('*.csv') # Mostrar el archivo csv_files, el cual es una lista de nombres print(csv_files)
El output que obtendremos en este caso será el siguiente:
Out [1] ['14rd_jan18.csv', '15rd_jan18.csv', '16rd_jan18.csv']
Creamos una lista vacía sobre la cual vamos a ir añadiendo dataframes, y a continuación escribimos un loop para ir leyendo los ficheros que tienen el patrón generado anteriormente.
list_data = [] # Escribimos un loop que irá a través de cada uno de los nombres de archivo a través de globbing y el resultado final será la lista dataframes for filename in csv_files: data = pd.read_csv(filename) list_data.append(data) #Para chequear que todo está bien, mostramos la list_data por consola list_data pd.concat(list_data,ignore_index=True)
Y si no los quiero concatenar y sólo quiero tener diferentes dataframes?
Hola dulce, no hay problema por eso, tu sigue con dataframes y completa el tutorial.
Estimada
Por favor como podria subir varios archivos excel los mismos contienen varias hojas con la misma estructura
La ruta de la carpeta es:
D:\1.2 CARPETAS PARA REPORTES\Totaten x años\2020
La carpeta 2020 tiene los siguientes archivos excel:
Enero
Febrero
Marzo
Y cada archivo tiene las siguientes hojas
HS_T7T5TEN_20200301_20200331 1
HS_T7T5TEN_20200301_20200331 2
HS_T7T5TEN_20200301_20200331 3