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的现代机器上,它不会太长@丹马舍克的建议也值得考虑。不过,这需要一个单一的过程来映射它们。现在我想起来了,你肯定可以在一次通过中进行计数。还有,你有多少对独特的问题?如果你让每一对都只出现一次,它会进一步缩小尺寸。