Python dask从大型无序csv文件中设置索引

Python dask从大型无序csv文件中设置索引,python,csv,sorting,indexing,dask,Python,Csv,Sorting,Indexing,Dask,冒着有点离题的风险,我想展示一个在dask数据帧中加载大型csv文件的简单解决方案,其中可以应用sorted=True选项并节省大量处理时间 我发现在dask中进行set_索引的选项对于我用于学习的玩具集群的大小和文件的大小(33GB)是不可行的 因此,如果您的问题是将大型未排序的CSV文件(数十GB)加载到dask数据帧中,并快速开始执行groupbys,我的建议是先使用unix命令“sort”对其进行排序 排序处理需求可以忽略不计,它不会将RAM限制推到无法管理的限制之外。您可以定义要运行/

冒着有点离题的风险,我想展示一个在dask数据帧中加载大型csv文件的简单解决方案,其中可以应用sorted=True选项并节省大量处理时间

我发现在dask中进行set_索引的选项对于我用于学习的玩具集群的大小和文件的大小(33GB)是不可行的

因此,如果您的问题是将大型未排序的CSV文件(数十GB)加载到dask数据帧中,并快速开始执行groupbys,我的建议是先使用unix命令“sort”对其进行排序

排序处理需求可以忽略不计,它不会将RAM限制推到无法管理的限制之外。您可以定义要运行/排序的并行进程的数量以及作为缓冲区使用的ram。在您有磁盘空间的情况下,这会发生变化

这里的技巧是在发出命令之前在您的环境中导出LC_ALL=C。无论哪种方式,pandas/dask排序和unix排序都会产生不同的结果

这是我使用的代码

export LC_ALL=C

zcat BigFat.csv.gz |
fgrep -v ( have headers?? take them away)|
sort -key=1,1 -t "," ( fancy multi field sorting/index ? -key=3,3 -key=4,4)|
split -l 10000000 ( partitions ??)
结果已准备好进行一次测试

ddf=dd.read_csv(.....)
ddf.set_index(ddf.mykey,sorted=True)
希望这有帮助


JC

如上所述,我只是将此作为我问题的解决方案发布。希望对别人有用

我并不是说这是最好的、最有效的或更具蟒蛇精神的!:-)

您可以在48小时后将答案标记为已回答