You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pandas批量读取大Excel文件耗时久,如何持久化存储DataFrame对象复用?

解决方案

你可以通过序列化pandas DataFrame到本地文件的方式实现一次读取、多次复用,下面是3种常用的可行方案,按照实现复杂度从低到高排列:

方案1:使用pickle格式(最便捷,优先推荐)

pickle是Python原生的序列化格式,可以完整保留DataFrame的所有结构信息,不需要额外安装依赖,读写速度极快,读取完成后的DataFrame和直接从Excel读取的结构完全一致。

第一次运行(读取Excel并生成缓存文件)代码:

import pandas as pd
import os

path = r'C:/Users/damia/Dropbox/Tesi/WIOD'
dirs = os.listdir(path)

complete_dirs = []
for f in dirs:
    complete_dirs.append(path + r"/" + f)

data = []
for el in complete_dirs:
    wiod = pd.read_excel(el, engine='pyxlsb')
    data.append(wiod)

# 序列化存储到本地,生成的pkl文件就是缓存文件
pd.to_pickle(data, 'wiod_all_data.pkl')

后续运行直接读取缓存的代码:

import pandas as pd
data = pd.read_pickle('wiod_all_data.pkl')

常规配置下读取时间可以压缩到几秒以内。

方案2:使用Feather格式(跨语言兼容,读写速度快)

如果需要在Python之外的其他语言(比如R)也用到这批数据,可以用Feather格式,需要先安装依赖:pip install pyarrow

存储代码:

# 因Feather不支持直接存储列表,可将14个DataFrame分开存储
for idx, df in enumerate(data):
    df.to_feather(f'wiod_data_{idx}.feather')

读取代码:

data = []
for i in range(14):
    df = pd.read_feather(f'wiod_data_{i}.feather')
    data.append(df)

方案3:使用Parquet格式(高压缩比,节省存储空间)

如果磁盘空间比较紧张,推荐用Parquet格式,压缩率比前两种高30%以上,适合长期存储,同样需要pyarrow依赖。

存储代码:

for idx, df in enumerate(data):
    df.to_parquet(f'wiod_data_{idx}.parquet')

读取代码:

data = []
for i in range(14):
    df = pd.read_parquet(f'wiod_data_{i}.parquet')
    data.append(df)

优化逻辑

可以增加自动判断逻辑,只要缓存文件存在就直接读缓存,不存在再读Excel,不需要手动切换代码:

import pandas as pd
import os

cache_path = 'wiod_all_data.pkl'
if os.path.exists(cache_path):
    # 缓存存在直接读
    data = pd.read_pickle(cache_path)
else:
    # 缓存不存在就读Excel生成缓存
    path = r'C:/Users/damia/Dropbox/Tesi/WIOD'
    dirs = os.listdir(path)
    complete_dirs = [os.path.join(path, f) for f in dirs]
    data = [pd.read_excel(el, engine='pyxlsb') for el in complete_dirs]
    pd.to_pickle(data, cache_path)

内容的提问来源于stack exchange,提问作者Turtlein

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 11:39:04