所以我现在有一些excel文件,总容量为1.8GB,而且还在增长。所有excel文件都有相同的列,并且可能与其他文件有一些重叠行。目前,我必须读取内存中的所有文件(速度很慢,由于PC RAM的限制,很快我将无法读取)。我使用的是以下两种方法,但这两种方法的内存效率相同,而且几乎相同:
all_data = pd.concat(data_dict.values(), ignore_index=True)
for df in data_dict.values(): all_data=pd.concat([all_data,df]).drop_duplicates().reset_index(drop=True)
所以我在想,有没有一种方法我不必读取内存中的所有数据进行比较,理想情况下可以限制熊猫的内存使用。速度对我来说不是一个大问题,但记忆力是。随着数据的不断增长,我希望我的代码保持相关性。有什么建议吗
下面是一个基于Python和Excel的方法,将在当前机器上运行。(我假设购买额外的RAM、在云上运行或使用数据库是不可行的。)
首先,创建两个示例数据帧以进行说明。(如有必要,您可以使用Excel本身将.xlsx文件转换为.csv,然后分块读取每个.csv文件。)
现在迭代每个数据帧的每一行。计算每行的哈希值。如果您以前见过散列,那么您以前也见过行本身,所以请继续。如果是新的哈希值,则导出该行并将哈希值添加到集合中
似乎是一个大数据问题。 您可能需要在您最喜欢的云提供商上安装Spark群集,例如Azure Databricks,然后使用Pyspark在那里执行此操作
有用:Removing duplicates using Pyspark
相关问题 更多 >
编程相关推荐