Python 计算70+;GB文件
我正在计算存储在Python 计算70+;GB文件,python,pandas,Python,Pandas,我正在计算存储在csv文件中的值的条件概率,该文件的大小为70+GB。示例数据集如下所示: Question 1 Question 2 [ 'a', 'b'] [ 'a', 'c'] [ 'a', 'c'] [ 'd', 'e'] [ 'f', 'g'] Question 1 Question 2 Probs [ 'a', 'b
csv
文件中的值的条件概率,该文件的大小为70+GB。示例数据集如下所示:
Question 1 Question 2
[ 'a', 'b']
[ 'a', 'c']
[ 'a', 'c']
[ 'd', 'e']
[ 'f', 'g']
Question 1 Question 2 Probs
[ 'a', 'b'] 0.33
[ 'a', 'c'] 0.66
[ 'd', 'e'] 1.00
[ 'f', 'g'] 1.00
这样的记录有数亿条。鉴于问题1
,我想计算问题2
的条件概率。在此示例中,条件概率如下所示:
Question 1 Question 2
[ 'a', 'b']
[ 'a', 'c']
[ 'a', 'c']
[ 'd', 'e']
[ 'f', 'g']
Question 1 Question 2 Probs
[ 'a', 'b'] 0.33
[ 'a', 'c'] 0.66
[ 'd', 'e'] 1.00
[ 'f', 'g'] 1.00
理想情况下,我可以使用以下代码(我是为另一个类似目的编写的):
但是这种方法的问题是,它需要整个数据帧
存储在内存中。给定一个70+GB的文件,我没有把文件保存在内存中的奢侈,所以我在这里寻找计算条件概率的内存效率高的替代方案
任何指点都将不胜感激
TIA。你应该努力给出一个脱离你具体情况的抽象例子。是否有任何理由需要提供像
'5696D0248E0869C96357D3'
这样的长且难以破译的字符串,而不是'a'
,'b'
等。简单的解决方案是逐行迭代csv,保留各种计数,然后根据这些计数计算条件概率。这可能需要几次传球。这假设您有足够的内存来跟踪这些计数,例如,对于每一对可能的问题。大声想想,为了节省空间,你可以保留一种计数结构。但这也许是过分了。@juanpa.arrivillaga:解决了这个问题,谢谢你的指点。@传递这么大的文件需要相当长的时间。我想知道是否有一个更优雅的解决方案…这将需要大量的时间,但在带有SSD的现代机器上,它不会太长@丹马舍克的建议也值得考虑。不过,这需要一个单一的过程来映射它们。现在我想起来了,你肯定可以在一次通过中进行计数。还有,你有多少对独特的问题?如果你让每一对都只出现一次,它将进一步缩小尺寸。你应该努力给出一个脱离你具体情况的抽象例子。是否有任何理由需要提供像'5696D0248E0869C96357D3'
这样的长且难以破译的字符串,而不是'a'
,'b'
等。简单的解决方案是逐行迭代csv,保留各种计数,然后根据这些计数计算条件概率。这可能需要几次传球。这假设您有足够的内存来跟踪这些计数,例如,对于每一对可能的问题。大声想想,为了节省空间,你可以保留一种计数结构。但这也许是过分了。@juanpa.arrivillaga:解决了这个问题,谢谢你的指点。@传递这么大的文件需要相当长的时间。我想知道是否有一个更优雅的解决方案…这将需要大量的时间,但在带有SSD的现代机器上,它不会太长@丹马舍克的建议也值得考虑。不过,这需要一个单一的过程来映射它们。现在我想起来了,你肯定可以在一次通过中进行计数。还有,你有多少对独特的问题?如果你让每一对都只出现一次,它会进一步缩小尺寸。