2013-05-21 152 views
1

我最近開始學習PyTables,發現它很有趣。我的問題是:PyTables的優點是什麼?

  • PyTables涉及到大型數據集時,相對於數據庫的基本優勢是什麼?
  • 這個包的基本目的是什麼(我可以在NumPy和Pandas中做同樣的構造,所以PyTables有什麼大不了的)?
  • 它是否真的有助於分析大數據集?任何人都可以在任何示例和比較的幫助下詳細說明嗎?

謝謝大家。

+0

你讀過[介紹](http://www.pytables.org/moin)和前幾個鏈接嗎?他們很好地解釋了「這個包的基本目的」。 – abarnert

+0

我想知道一些確切和具體的優勢和劣勢你們.. – khan

+1

http://stackoverflow.com/faq – user2246674

回答

13

當涉及到大型數據集時,PyTable對數據庫有什麼基本優勢?

實際上,它是的數據庫。當然,這是一個分層數據庫,而不是像dbm(顯然不太靈活)或像sqlite3(它們更強大但更復雜)的關係數據庫這樣的1級關鍵值數據庫。

但是,非數字數據庫的主要優勢與簡單的Python list上的numpy ndarray的優點完全相同。它針對執行大量向量化數字操作進行了優化,因此,如果這是您使用它進行的操作,則需要更少的時間和空間。

這是什麼包

the front page第一行引用(或者,如果你喜歡的,第一行the FAQ)的基本目的:

PyTables是用於管理分層數據集,旨在高效且輕鬆地處理大量數據。

還有一個頁面列出了MainFeatures,鏈接在首頁的頂部附近。

(我可以在NumPy和Pandas中做同樣的構造,所以PyTables有什麼大不了的)?

真的嗎?只有16GB RAM的機器可以在numpy或pandas上處理64GB數據?或者一臺32位機器?

不,你不能。除非您將數據分成多個單獨的集合,您可以根據需要加載,處理和保存 - 但這會變得更復雜,而且速度更慢。

這就像問你爲什麼需要numpy的時候,你可以做同樣的事情只是普通的Python列表和迭代器。當你擁有8個浮點數組時,純Python是非常棒的,但是當你有一個10000x10000的數組時,它就不是。當你有幾個10000x10000的陣列時,numpy非常棒,但是當你有十幾個互連的陣列時,它們的大小不會超過20GB。

它是否真的有助於分析大數據集?

是的。

誰能細說與任何例子的幫助...

是。爲什麼不在這裏複製所有的例子,爲什麼不直接看一下文檔頭版的簡單例子,源代碼樹中的例子,從現實世界的用例鏈接到前端兩次點擊文檔的頁面等?

如果你想讓自己確信PyTables的實用性,可以採取任何一個例子,並將其擴展到32GB的數據,然後試着弄清楚在numpy或pandas中如何做同樣的事情。