我正在做一个项目,其中我必须分析在美国发生的龙卷风的大量数据,直到现在。由于python很适合数据分析,我选择了它。但我有一些问题需要澄清: 我正在使用熊猫进行数据分析。我到目前为止所做的是创建了一个包含所有.csv文件的大数据帧(1GB .csv文件)。现在假设我想计算2000年发生的总死亡人数。所以我为此写了一个查询。查询是获取结果,但需要一些时间。将所有数据存储在数据帧中并获取数据是否合适?或者还有其他更快的方法。 2.另一种方法是创建整个文件的json字符串并查询json字符串。我没有采用这种方法做任何事情。是一个好人吗?
谢谢。
答案 0 :(得分:0)
Pandas在内存使用方面有一些限制。这也是一个普遍的python问题,因为内存分配是懒惰的。因此,只要你的记忆力不够,就会变脏。
所以我在这里看到两个域名。 1.节省内存,2。优化时间。
您可以考虑的事项:
对于某些操作,时间因素是正确设置pandas数据帧。尝试检查您的索引架构,例如。避免循环遍历行。 2.2对某些任务使用numpy向量方法将比pandas + python脚本快得多。
我个人在使用pandas + sql lite等混合方法以及它们之间的迷你批处理方面也有很好的经验(见第1点)。
答案 1 :(得分:-1)
您可以使用sframe库代替pandas: https://dato.com/products/create/docs/generated/graphlab.SFrame.html
sframe库允许您保存为快速加载且易于索引的二进制格式。 Sframe允许您处理比可用RAM大得多的数据集,因为它可以批量工作并将页数据工作到磁盘。该库还可以有效地利用多个内核来加速连接和其他操作,根据我的经验,它应该更快地用于您的用例。
语法不如pandas方便,但功能相似,并且有一个to_dataframe()运算符可将sframe转换为pandas数据帧。
安装它:
pip install sframe
您可以使用read_csv API读取csv文件,然后使用save API将其保存为二进制格式,然后您可以使用load API加载二进制格式。这些都包含在上面的链接中。