我正在处理一个由CSV文件组成的数据集,我的任务是总结所有特定的数据点,以便它们可以被视为一个而不是多个。例如,每条记录由(year,name,ID,value)组成,其中ID、姓名和年份可以重复。我的最终目标是一个程序,有效地看每一年,然后在这一年的每个名字,最后为任何相同的ID的总和的价值。我正在使用内置在Python中的CSV阅读器,但也可以使用Pandas,因为所有的CSV都将在项目结束时使用它转换为.dta文件。我知道一个for循环 * 将 * 工作在这里,我只是检查每一行重复的年份,名称和ID,但我工作的记录超过一百万,所以优化将大大帮助。
3条答案
按热度按时间pnwntuvh1#
gj3fmq9x2#
如果你需要速度,polars有一个用Rust编写的核心,并且在基准游戏中表现得非常好。我个人认为它的API非常直观。这里有一个解决这个问题的极端解决方案,但一如既往,要根据您的数据对不同的解决方案进行基准测试。
data.csv
main.py
output.csv
kse8i1jr3#
你可以用O(n)的时间复杂度来完成这个任务。使用字典,这个解决方案变得微不足道。遍历csv中的每一行并提取字段。从那里,使用重复字段作为键关联值。一个简单的例子:
你必须根据你的特定用例进行修改,但是在字典中添加键的时间复杂度为O(1),所以这可能是最简单的“快速”解决方案。如果在实现了这个策略之后,你发现你需要更快的速度,我建议你考虑一下C++和线程。