我有一个csv,我想用python阅读。这个csv有两栏,一栏是客户的名字,另一栏是他们的年龄,我想根据客户的年龄对他们进行分组。但是,此csv中有10 ^ 9行。因此,我必须为此任务使用高效的算法,而不是读取所有行,有没有办法做到这一点?
答案 0 :(得分:0)
我想您是在问如何在不将所有行立即读入内存的情况下对数据进行聚类。
一种想法是使用两阶段方法进行聚类:
首先,使用数据样本(随机子集)定义集群。例如,您可以随机选择1,000条记录(或其他合理值),并查看需要多少个群集以及群集中心。您可以重复几次此过程,直到对群集满意为止。
第二,由于现在您有了集群中心,因此可以将每个客户“分配”给他们适当的集群(即使用最近的集群中心)。您可以为每个记录或方便的批处理一个接一个地执行此操作,因为不需要一次完成所有操作。如果您不必立即将所有记录聚在一起,甚至可以“懒惰地”(仅在需要时)进行此分配。
这样,您就不必一次将大量的记录加载到内存中。