¿Cómo leer por lotes Excel con Python?

Cuando se usa Python para procesar Excel en lotes, a menudo es necesario leer datos en lotes. La forma común es combinar globmódulos, que pueden leer todos los csv en la carpeta actual en lotes y fusionarlos en uno grande DataFrame.

df_list = []
for file in glob.glob("*.csv"):
    df_list.append(pd.read_excel(file))

df = pd.concat(df_list)

Pero esto requiere que el formato y los nombres de columna de cada archivo csv que se lea sean iguales.

Si desea leer cada csv de forma independiente, puede usar  os el módulo para recorrer los archivos CSV en la carpeta actual y luego usar la  read_csv función Pandas para leer cada archivo.

import os
import pandas as pd

df_list = []

for file in os.listdir():
    if file.endswith(".csv"):
        df_list.append(pd.read_csv(file))

Ahora, df_list cada elemento en es one  DataFrame, pero esto aún no es perfecto y aún debe extraerse manualmente de la lista al llamar.

Luego, cómo leer automáticamente todos los datos CSV en la carpeta actual y asignar cada CSV a una variable diferente

Puedes usar la función en Python globals() , que devuelve un diccionario que contiene todas las variables globales del programa actual, por ejemplo, podemos usar la siguiente sintaxis para asignar un valor a una clave en el diccionario:

globals()[key] = value

Por lo tanto, use el siguiente código para leer automáticamente todos los datos CSV en la carpeta actual y asigne cada CSV a una variable diferente

df_list = []

for i, file in enumerate(os.listdir()):
    if file.endswith(".csv"):
        df_list.append(pd.read_csv(file))

for i, df in enumerate(df_list):
    globals()[f'df{i+1}'] = df

Por supuesto, también se puede aplicar un método similar para leer diferentes hojas de Excel, por ejemplo, supongamos que data.xlsxhay 10 hojas

df_list = [pd.read_excel("data.xlsx", sheet_name=i) for i in range(10)]

for i, df in enumerate(df_list):
    globals()[f"df{i+1}"] = df

Si no sabe cuántas hojas tienen los datos, también puede usarlos  sheet_name=Noney luego leerlos automáticamente de acuerdo con el diccionario devuelto

df_list = pd.read_excel("data.xlsx", sheet_name=None)

for i, (name, df) in enumerate(df_list.items()):
    globals()[f"df_{name}"] = df

Supongo que te gusta

Origin blog.csdn.net/veratata/article/details/128794653
Recomendado
Clasificación