2016-02-13 25 views
0

我使用三個數據幀來分析順序數字數據 - 基本上是及時捕獲數字數據。有8欄和360k條目。我創建了三個相同的數據框 - 一個是原始數據,第二個是用於分析的「便箋式」,第三個數據框包含分析結果。這運行真的很慢。我想知道是否有辦法讓分析運行更快?如果不是三個單獨的8列數據框而是一個大的24列數據框,它會更快嗎?使數據幀分析更快

+1

這取決於。我建議你嘗試和衡量。 – Goyo

回答

1

使用cProfile和lineprof來計算出花費的時間。

要得到別人的幫助,發表您的真正的代碼,你的真實個人資料的結果。

優化是一個經驗過程。人們的小技巧往往適得其反。

0

最有可能也不要緊,因爲熊貓商店每列分別反正(數據幀是系列的集合)。但是,通過使用單個幀,您可能會獲得更好的數據局部性(所有數據在內存中相鄰),所以值得嘗試。檢查這個經驗。

0

重新讀這篇文章我意識到我可以更清楚。我一直在用寫的語句,如:

dm.iloc[p,XCol] = dh.iloc[x,XCol] 

一個數據幀(DH)的單個細胞轉移到不同的行中的第二數據幀(DM)的。它運行得非常緩慢,但我需要對這個特定的文件進行排序,並且我只是在性能上生活。

根據Michael Heydt的「Learning Pandas」第146頁,「.iat」比從數據框提取(或寫入)標量值的「.iloc」要快。我試了一下,它的工作原理。使用我的原始300k行文件,使用「.iloc」運行時間爲13小時(!),使用「.iat」的相同數據文件在大約5分鐘內運行。

淨 - 這是更快: dm.iat [P,XCOL] = dh.iat [X,XCOL]