高效循环读取excel中有多个sheet的两种方法

先说明一下如果单纯地使用read_excel方法,会导致效率极其低下,因为read_excel第一个参数是要传path(如:r’C:\Users\Desktop\贷款\data.xlsx’)给计算机,每一次循环都要再传一次,简直慢的不要不要的,而ExcelFile则是一个类,给计算机循环传类就不会存在这种问题。
以下是传统方法:

wb = xlrd.open_workbook(r'C:\Users\Desktop\贷款\data.xlsx')
 # 获取workbook中所有的表格
sheets = wb.sheet_names()
data2 = pd.DataFrame()
for i in range(len(sheets)):
    df2 = pd.read_excel(r'C:\Users\Desktop\贷款\data.xlsx'', sheet_name=sheets[i], index=False, encoding='utf8',converters={'外呼任务批次':str,'座席工号':str})
    data2 = data2.append(df2)
    print(i)
    print(sheets[i])

这里要介绍一下国外大神的方法:附链接(https://stackoverflow.com/questions/26474693/excelfile-vs-read-excel-in-pandas/38560203#38560203),以下是搬运过来的。
从技术上讲,ExcelFile是一个类,read_excel是一个函数。无论哪种情况,实际的解析都是由中_parse_excel定义的方法处理的ExcelFile。所以可以使用以下两种传类的方法来进行。
PS:我这个excel每一个sheet有上万行,共有30多个sheet。
1、ExcelFile&read_excel方法;

xl = pd.ExcelFile(path)
for name in xl.sheet_names:
    df = pd.read_excel(xl, name)

2、ExcelFile&parse方法。

xl = pd.ExcelFile(path)
for name in xl.sheet_names:
    df = xl.parse(name)

下面是实际运行代码

import pandas as pd
def read_excel1(path):
    data_xlsx = pd.ExcelFile(path)
    print(data_xlsx.sheet_names)
    data=pd.DataFrame()
    for name in data_xlsx.sheet_names:
        df=data_xlsx.parse(sheet_name=name,converters={'外呼任务批次':str,'座席工号':str,'问卷调查结果':str})
#         data[name]=df
        data = data.append(df)
#         print(df)
        print(name)
    return data
path=r'C:\Users\Desktop\贷款\data.xlsx'
data=read_excel1(path)
import pandas as pd
def read_excel1(path):
    data_xlsx = pd.ExcelFile(path)
    print(data_xlsx.sheet_names)
    data=pd.DataFrame()
    for name in data_xlsx.sheet_names:
        df=data_xlsx.read_excel(data_xlsx,sheet_name=name, encoding='utf8',converters={'外呼任务批次':str,'座席工号':str,'问卷调查结果':str})
#         data[name]=df
        data = data.append(df)
#         print(df)
        print(name)
    return data

path=r'C:\Users\Desktop\贷款\data.xlsx'
data=read_excel1(path)
### 回答1: 在Python中,可以使用pandas库来读取Excel文件中的多个sheet数据。首先,需要安装pandas库,可以使用`pip install pandas`命令进行安装。 接下来,需要使用`pandas`的`read_excel()`函数来读取Excel文件。这个函数可以接受一个参数`sheet_name`,用于指定要读取sheet名称或索引。 例如,如果Excel文件中有两个sheet分别为"Sheet1"和"Sheet2",可以通过以下代码读取它们的数据: ```python import pandas as pd # 读取Excel文件 data = pd.read_excel('filename.xlsx', sheet_name=['Sheet1', 'Sheet2']) # 获取第一个sheet的数据 sheet1_data = data['Sheet1'] # 获取第二个sheet的数据 sheet2_data = data['Sheet2'] ``` 在以上代码中,`filename.xlsx`是要读取Excel文件的路径。通过`sheet_name`参数指定了要读取sheet名称,使用了一个字典的方式将sheet名称和对应的数据存储在`data`变量中。 通过`data`变量,可以通过索引的方式获取到每个sheet的数据,存储在不同的变量中,如`sheet1_data`和`sheet2_data`。 除了使用字典的方式读取多个sheet外,还可以使用其他的方式,如读取所有的sheet数据或者读取指定索引的sheet数据。详细的用法可以参考`pandas`官方文档。 这样就可以通过pandas库实现在Python读取Excel文件中的多个sheet数据了。 ### 回答2: 在Python中,如果想要使用pandas库读取Excel文件中的多个sheet数据,可以按照以下步骤进行操作。 首先,需要安装pandas库。可以使用pip命令进行安装:pip install pandas 接下来,导入pandas库和openpyxl库(用于支持Excel文件的写操作): import pandas as pd import openpyxl 然后,利用pandas的read_excel函数读取整个Excel文件: excel_file = pd.ExcelFile('文件路径/文件名.xlsx') 读取整个Excel文件的所有sheet名称: sheet_names = excel_file.sheet_names 遍历所有的sheet名称,读取每个sheet的数据并存储到字典中: data_dict = {} for sheet_name in sheet_names: data_dict[sheet_name] = excel_file.parse(sheet_name) 最后,可以通过data_dict字典访问到每个sheet的数据: for sheet_name, data in data_dict.items(): print("Sheet名称:", sheet_name) print("Sheet数据:", data) 注意事项: 1. 需要确定Excel文件的路径和文件名,并将其替换到代码中的'文件路径/文件名.xlsx'部分。 2. 需要确保Excel文件支持.xlsx格式,否则可能需要使用不同的库或方法进行读取。 3. 如果Excel文件中的数据包含特殊格式或公式,需要进行额外的处理或转换。 ### 回答3: Python中的pandas库提供了一种方便的方法读取Excel文件中的多个sheet数据。要读取多个sheet数据,我们需要使用pandas的ExcelFile函数来打开Excel文件,然后使用parse方法读取每个sheet的数据。 首先,我们需要安装pandas库。在命令行中运行以下命令进行安装: pip install pandas 接下来,我们可以使用以下代码来读取多个sheet数据: import pandas as pd # 使用ExcelFile函数打开Excel文件 excel_file = pd.ExcelFile('filename.xlsx') # 获取所有sheet的名称 sheet_names = excel_file.sheet_names # 创建一个空的字典来存储每个sheet的数据 data = {} # 遍历每个sheet的名称 for sheet_name in sheet_names: # 使用parse方法读取每个sheet的数据 data[sheet_name] = excel_file.parse(sheet_name) # 打印每个sheet的数据 for sheet_name, sheet_data in data.items(): print(f"Sheet '{sheet_name}':") print(sheet_data) 上述代码中,我们首先使用ExcelFile函数打开Excel文件,并使用sheet_names属性获取所有sheet的名称。然后,我们创建一个空的字典来存储每个sheet的数据。 接下来,我们使用for循环遍历每个sheet的名称,并使用parse方法读取每个sheet的数据。将每个sheet的名称作为字典的键,将每个sheet的数据作为字典的值存储起来。 最后,我们使用for循环打印每个sheet的数据。这样,我们就可以读取并打印出Excel文件中的多个sheet数据。 以上是使用Python的pandas库来读取Excel文件中多个sheet数据的方法。希望对你有所帮助!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值