我有大型超過3.15億行和單列的CSV文件。我必須一次處理超過50個這樣的文件以獲得結果。用Python處理大型csv文件
由於我使用csv閱讀器閱讀了10多個,它需要超過12GB的RAM,並且非常緩慢。我只能讀取文件的一部分以節省內存,但會花費更多時間來讀取文件,因爲它每次都會讀取整個文件。
我想過把它們加載到數據庫中並從那裏查詢數據。但是,我不確定這種方法是否會有所幫助。任何人都可以請告訴哪個是在Python中處理這種場景的最有效的方法嗎?
我有大型超過3.15億行和單列的CSV文件。我必須一次處理超過50個這樣的文件以獲得結果。用Python處理大型csv文件
由於我使用csv閱讀器閱讀了10多個,它需要超過12GB的RAM,並且非常緩慢。我只能讀取文件的一部分以節省內存,但會花費更多時間來讀取文件,因爲它每次都會讀取整個文件。
我想過把它們加載到數據庫中並從那裏查詢數據。但是,我不確定這種方法是否會有所幫助。任何人都可以請告訴哪個是在Python中處理這種場景的最有效的方法嗎?
你會發現這裏 Lazy Method for Reading Big File in Python?
的解決方案。此外,如果你有一個較長的處理管道,你可以看看第4.13節。在本書中創建數據處理管道,由Beazly和Jones撰寫的Python Cookbook第3版。
退房ETLyte,我剛剛開源的工具。它是.NET,但你可以從Python中調用EXE。這仍然是一項正在進行的工作,但我認爲它適用於您的情況。
隨着ETLyte,這裏將是步驟:Flatfiles
文件夾
config.json
指定。Schemas
文件夾或指定的任何一箇中(注意:如果它們都具有相同的模式(您表示它只是一個列),則只需將模式中的flatfile
字段更改爲一個與您的文件相匹配的正則表達式)ETLyteExe.exe
並允許數據在ETLyte纔剛剛開始流動,但它有很多的功能和更大量的路線圖。它還帶有一個交互式REPL,帶有字完成功能,它包裝SQLite DLL,因此您可以在不安裝sqlite3的情況下詢問數據。有關此工具的概述,look here。
取決於您正在使用哪種類型的操作。數據庫是一種選擇,EC2是另一種選擇,CLI是第三種,但這一切都取決於你在做什麼。 –
我採取的值,執行簡單的乘法和加法選項,存儲結果,並向前移動到文件的下一個塊。 –
您的問題未指定。這些文件如何相互關聯?爲什麼他們需要並行處理而不是順序處理?一次需要多少行記憶才能進行計算? (例如,一次累計總和只需要一行。) –