gpt4 book ai didi

python - 为大型数据集在 pandas 中排序

转载 作者:IT老高 更新时间:2023-10-28 20:53:43 28 4
gpt4 key购买 nike

我想按给定列对我的数据进行排序,特别是 p 值。但是,问题是我无法将整个数据加载到内存中。因此,以下内容不起作用,或者仅适用于小型数据集。

data = data.sort(columns=["P_VALUE"], ascending=True, axis=0)

有没有一种快速的方法来按给定列对我的数据进行排序,只考虑 block 并且不需要将整个数据集加载到内存中?

最佳答案

过去,我使用过 Linux 的一对可敬的 sortsplit实用程序,用于对使 pandas 窒息的海量文件进行排序。

我不想贬低此页面上的其他答案。但是,由于您的数据是文本格式(正如您在评论中指出的那样),我认为开始将其转换为其他格式(HDF、SQL 等)是一个巨大的复杂性,因为 GNU/Linux 实用程序一直在解决这个问题在过去 30-40 年有效。


假设您的文件名为 stuff.csv,如下所示:

4.9,3.0,1.4,0.6
4.8,2.8,1.3,1.2

那么下面的命令会按照第3列排序:

sort --parallel=8 -t . -nrk3 stuff.csv

注意这里的线程数设置为8。


以上内容适用于适合主内存的文件。当你的文件太大时,你会先把它分成几个部分。所以

split -l 100000 stuff.csv stuff

会将文件拆分为长度最多为 100000 行的文件。

现在您将分别对每个文件进行排序,如上所述。最后,您将使用 mergesort ,再次通过(等待它...)sort:

sort -m sorted_stuff_* > final_sorted_stuff.csv

最后,如果你的文件不是 CSV 文件(比如说它是一个 tgz 文件),那么你应该找到一种方法将它的 CSV 版本通过管道传输到 split .

关于python - 为大型数据集在 pandas 中排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21271727/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com