回答
在評論中,@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