处理 Excel 文件中的大数据的推荐方法/工具是什么?

数据挖掘 数据 预处理 擅长
2022-02-28 00:03:57

新年快乐!我目前正在从事一个分析项目,该项目将大量数据存储在 excel 文件中(1000 个文件中大约 50GB)。这些文件使用自定义格式将日期时间数据存储到毫秒。鉴于大数据量,该处理还必须是高效的。处理此问题的推荐方法和工具是什么?

我见过其他人将 excel 转换为 CSV,然后将他们的分析限制在 CSV 本身。这种方法是否具有优势,因为 CSV 读取速度更快,并且可以由更大的工具集处理?有没有强大的工具\库可以进行批量转换,甚至提取自定义格式数据?

谢谢并恭祝安康

2个回答

pandas 加载 csv 的速度比 excel 快 10 倍。因此,如果可以的话,请将这些文件转换为 csv,这些文件会被多次加载。

我一直在使用 cython,它似乎可以加快读取功能和处理速度。请点击此链接了解更多详情。它说,使用 cython 可以将处理速度提高 10 倍。

建议:如果可以的话,我建议将数据存储在数据库中,并使用 django/peewee 之类的 orm 进行数据处理。

如果您有任何其他疑问,请让我知道。

如果您想在不先转换为 CSV 的情况下保持 Excel 格式,请查看 R 编程环境中的readxl包。由于您有多个文件要读入并假设它们位于同一个文件夹中,因此我将使用 for 循环并遍历文件夹中的所有文件名。然后,如果所有文件都具有相同的变量,您可以将它们绑定到一个数据帧中。但是,可用内存可能会限制您在一帧中将所有内容绑定在一起的能力。您可能还需要根据电子表格的结构修改 read_excel 语句。

setwd("directory_path") # Set the working directory

# List all the excel (xlsx) files in the directory

files <- list.files("directory_path", full.names = TRUE, pattern="*.xlsx")

# Create empty "collector" data frame

df <- data.frame()

# loop through files in subset list and read the xlsx file and bind to "collector" data frame

for (i in 1:length(files)) {
  tempdf <- readxl::read_excel(files[i], sheet = 1, col_names = TRUE, col_types = NULL, na = "", skip = 0)
  df <- rbind(df,tempdf)
}