如何在python中读取大量excel文件?

2024-10-01 13:45:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我有很多excel文件(xlsx格式),希望阅读和处理它们

例如,文件名为ex201901、ex201902等。。。。201912.

其名称采用EXYYMM格式

无论如何,要像平常一样在熊猫中导入这些文件,很容易

import pandas as pd

df201901 = pd.read_excel(r'C:\\users\ex201901.xlsx)
df201902 = pd.read_excel(r'C:\\users\ex201902.xlsx)
df201903 = pd.read_excel(r'C:\\users\ex201903.xlsx)
df201904 = pd.read_excel(r'C:\\users\ex201904.xlsx)
....
df201912 = pd.read_excel(r'C:\\users\ex201912.xlsx)

然而,这似乎是一个无聊而乏味的故事

在SAS程序中,我使用宏()语法。但在python中,我不知道如何处理

您能帮助我如何以简单的方式处理多个重复的作业吗,例如SAS MACRO()

谢谢你的阅读


Tags: 文件import名称pandasread文件名格式xlsx
2条回答

您可以使用python中的OS模块。它有一个方法listdir,它将所有文件名存储在文件夹中。检查以下代码:

import os, re
listDir = os.listdir(FILE_PATH)
dfList = []
for aFile in listDir:
    if re.search(r'ex20190[0-9]{1}.xlsx', aFile):
        tmpDf = pd.read_excel(FILE_PATH + aFile)
        dfList.append(tmpDf)

outDf = pd.concat(dfList)

考虑到您可能希望在之后以某种方式同时处理所有数据帧,如果您甚至将它们放入单独的局部变量中,那么这就是一种气味。通常,每当您遇到“这项任务感觉重复,因为我一遍又一遍地做同一件事”,这就需要引入某种循环。当您计划使用pandas时,您很可能很快就会再次进行迭代(现在您有了文件,您可能会对这些文件的行执行一些转换),在这种情况下,您最好了解一下控制流a la循环在Python中(实际上在pandas中)是如何工作的;好的教程很多

在您的特定情况下,根据您计划在之后进行的处理类型,您可能会从以下内容中受益

df2019 = [pd.read_excel(rf'C:\users\ex2019{str(i).zfill(2)}.xlsx') for i in range(1, 13)]

这样,您就可以通过df2019[5]访问各个数据帧,以获得对应于六月的数据帧,或者您也可以使用df = pd.concat(df2019)将所有数据帧折叠成一个数据帧,如果这符合您的需要的话

如果文件名中的结构较少,glob可以派上用场。有了这一点,上述情况可能会变成类似的情况

import glob
df2019 = list(map(pd.read_excel, glob.glob(r'C:\users\ex2019*.xlsx')))

相关问题 更多 >