大数据与使用熊猫的数据透视表

我目前使用Postgres数据库来存储调查答案。

我面临的问题是我需要从Postgres数据库生成数据透视表。

当数据集很小时,读取整个数据集并使用Pandas生成数据透视表很容易。

但是,我目前的数据库现在有大约500k行,并且每天增加大约1000行。 读取整个数据集不再有效。

我的问题是,我是否需要使用HDFS将数据存储在磁盘上并将其提供给Pandas以进行旋转?

我的客户需要几乎实时地查看数据透视表输出。 我们有办法解决它吗?

我的理论是,我将创建500k行的数据透视表输出并将输出存储在某处,然后当新数据保存到数据库时,我只需要将新数据与现有数据透视表合并。 我不太确定Pandas是否支持这种方式,或者它需要一个完整的数据集来进行旋转?


你尝试过使用pickle吗? 我是一名数据科学家,并且始终使用这种数据集的1M +行和几百列数据集。

在你的具体情况下,我会推荐以下内容。

import pickle 
save_data = open('path/file.pickle', 'wb') #wb stands for write bytes
pickle.dump(pd_data, save_data)
save_data.close()

在上面的代码中,你正在做的是将数据保存为一种紧凑格式,可以使用以下方式快速加载:

pickle_data = open('path/file.pickle', 'rb') #rb stands for read bytes 
pd_data = pickle.load(pickle_data)
pickle_data.close()

在这一点上,您可以将您的数据(pd_data)附加到新的1,000行并使用pickle再次保存。 如果你的数据会继续增长,你期望内存成为一个问题,我建议找出一种方法来追加或连接数据,而不是合并或加入,因为后两者也会导致内存问题。

你会发现,当你读取磁盘中的某些东西时,这会减少大量的加载时间(我使用Dropbox,而且它仍然闪电般快)。 我通常为了进一步减少这些数据而将我的数据集分割成行和列组,然后编写根据需要加载pickle数据的方法(超级有用的图形)。

链接地址: http://www.djcxy.com/p/53543.html

上一篇: Large data with pivot table using Pandas

下一篇: Creation of large pandas DataFrames from Series