回答
在评论中,@steboc提到使用sqlite作为可能的解决方案。你可以使用任何数据库作为后端,但sqlite相当快,并且几乎需要设置为零。下面是写了一堆垃圾,以SQLite的整组回读的例子:
开始装载了几包,并设置环境:
import pandas as pd
import sqlite3
import string
## connect to a db. This db will be created if it does not exist
conn = sqlite3.connect('example.db')
c = conn.cursor()
np.random.seed(123)
## create some random data in a pandas dataframe
n = 1000000
c = 10
通过30次,每次我们让我们的循环将创建一个1毫米记录,10个数字字段和一个简单的字母键的数据框。我们将在sqlite数据库中戳该数据框。在循环结束时,我们的数据库中将有30毫米的行。这发生在我的MBP约15分:
%%time
for i in arange(30):
df = pd.DataFrame(np.random.randn(n, c), columns=list(map(chr, range(65, 65+c))))
df['key'] = string.ascii_letters[i]
df.to_sql(name='test_table', if_exists='append', con=conn)
现在,如果我们要对在该领域key
值所有这些数据分组做的操作,我们会首先需要获得所有的唯一值键。一种方法是做到这一点:
%%time
keys_df = pd.read_sql(sql='SELECT DISTINCT key FROM test_table', con=conn)
keys_df
现在我们keys_df
这是用含有'关键”的所有唯一值一列的数据帧。现在我们可以遍历每个组,并从数据库中仅提取该组并从中进行分组操作。这里的例子确实微不足道的描述():
%%time
for row in keys_df.iterrows():
tempdf = pd.read_sql(sql='SELECT * FROM test_table WHERE key=\'' + row[1][0] + '\';', con=conn)
## do anything you want with your group here.
## we'll print describe just for fun
print tempdf.describe()
print ""
很显然,在现实生活中,你会放值的数据结构。
我希望这有助于说明如何使用sqlite和熊猫来遍历数据组。
Blaze项目很乐意通过分块数据集,然后在每个块上使用Pandas来管理大型数据集。 Blaze out-of-core docs可能会让你感兴趣。这里是NYC Taxi数据集上的explicit example。
如果您更喜欢较慢的纯python解决方案,那么toolz
项目可能会让您感兴趣。这里是它的文档streaming analytics
不推荐使用仅链接答案的好例子。这些链接中只有三分之一持续了18个月的间隔。也许:http://blaze.readthedocs.io/en/latest/index.html – 2016-07-09 16:21:47
- 1. Triplestore对于大型数据集
- 2. 对大型(ish)数据集进行缓慢的django数据库操作。
- 3. 通过在大型数据集(30GB)上操作的MySQL(Workbench)组
- 4. 适用于大型数据集的OptaPlanner
- 5. 用于大型数据集的Android ListView
- 6. 对于大数据集,Javascript数组不移动和弹出操作
- 7. 重构GroupBy避免放缓对大数据集的操作
- 8. 停止对用于数据收集的变量的操作?
- 9. 关于python数据类型的操作
- 10. 数据集操作
- 11. 数据集操作
- 12. 大型数据集
- 13. 将XGBOOST应用于大型数据集
- 14. 对于大型数据集的高效LINQ查询
- 15. 对于大型数据集的Python内存错误
- 16. 对于“大型”数据集,替代interp1d的Sane三次插值?
- 17. 对于avg运算符,操作数数据类型nchar无效
- 18. MAX(文本)返回操作数数据类型文本对于最大操作符无效。在sql server 2008中
- 19. 操作数数据类型float对'^'操作符无效
- 20. 对于大型表数据集,使用Int PK而不是GUID
- 21. 对于大型数据集,mongoDB或Cassandra比MySQL更好吗?
- 22. 检查有效地串对于大型数据集
- 23. ASP.net操作数据集中的数据
- 24. 用于大型数据集的MySQL数据库建模
- 25. 用于大型数据集的嵌入式Java数据库
- 26. GROUP BY对大型数据库没有限制
- 27. “数据类型对于布尔操作无效。”
- 28. 针对大型数据集的MySQL备份/恢复策略(大于15GB)
- 29. 操作数据集列hadoop
- 30. 如何操作数据集
[this](http://stackoverflow.com/questions/773/how-do-i-use-pythons-itertools-groupby)和[this](https:// docs。 python.org/2/library/itertools.html)可能会有所帮助。 – Ujjwal 2014-12-19 05:04:03
也许你可以使用sqlite3.exe来聚合核心外的数据 – steboc 2014-12-19 10:15:42