【发布时间】:2021-05-28 01:26:05
【问题描述】:
熊猫新手在自学方面取得了一些进展,所以我想要最好和最有效的方法来处理这个问题:
我有 3 个有时超过 3 个 excel 文件“.xlsx”,每个文件大约 100MB,每个文件至少 800K 记录和 200 列。
文件完全共享相同的列,它们被拆分,因为它们是从无法处理所有合并的系统中导出的。
我想在一个数据帧中加载文件,打开每个文件然后concat 或append 我知道这将取决于机器的内存,但我正在寻找处理这些文件和控制的最佳方法它们在一帧中。
这就是我所拥有的:
start = timeit.default_timer()
all_data = pd.DataFrame()
for f in glob.glob("./data/*.xlsx"):
df = pd.read_excel(f)
all_data = all_data.append(df,ignore_index=True)
all_data
stop = timeit.default_timer()
execution_time = stop - start
print (execution_time)
使用 append 加载 df all_data 中的文件大约需要 7 分钟
有没有最好的方法在更短的时间内加载它们?
【问题讨论】:
-
加载文件并写入sql ?更多信息stackoverflow.com/questions/28766133/…
-
将每个数据帧读入数据帧列表,然后在整个帧列表上调用一次
conact,而不是按顺序追加会显着提高性能。 -
@HenryEcker 我将其中一个文件保存为
.csv,大小几乎翻了一番,但比.xlsx快。在将xlsx 读取到数据帧之前,是否有特定的函数可以将xlsx 处理为csv?数据丢失的可能性有多大?谢谢 -
我不是问这个问题的人。我不经常使用电子表格。我确实做了相当多的 pandas 基准测试,这就是为什么我知道
for append的性能明显比列表中的单个concat差。但在将您的数据转换为更有用的格式或从 xlsx 转换为 csv 等方面,这可能不是领域。