[問題] Pandas 如何讀取過大的json

看板Python作者 (君)時間6年前 (2019/07/27 15:14), 6年前編輯推噓4(4018)
留言22則, 5人參與, 6年前最新討論串1/1
我新手學python沒多久有夠菜 試了很久還是解決不了這個問題 有求於各位大大幫忙 Json結構大概如下 [{A:123, B:456, C:[{a:1, b:1, c: 1},{a:2, b:2, c:3}.....]}, { ...}] 因為大概有30萬列 因為pandas的read_json會出現memory error 查了一下用ijson試著慢慢讀取 用下面的code讀A跟B 寫入DataFrame都沒問題 但是換讀取C又會出現memory error C裡面是相同結構dict組成一個長度不等的list 不知道還有什麼方法可以寫進DataFrame 以下是code filename='full.json' with open(filename,'r') as f objects = ijson.items(f, 'item.C') columns = list(objects) df['C'] = pd.Series(columns) 請問該怎麼處理... ----- Sent from JPTT on my iPhone -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 49.217.85.245 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1564211640.A.F28.html

07/27 20:17, 6年前 , 1F
查了一下官網 有chunk_size可以指定 也許會好一點
07/27 20:17, 1F

07/27 21:18, 6年前 , 2F
我照找到的範例做過for chunk in chunks 這邊就會error
07/27 21:18, 2F

07/27 21:18, 6年前 , 3F
好像是說chunks不能迭代 我也不懂...
07/27 21:18, 3F

07/27 22:56, 6年前 , 4F
可以貼一下你嘗試的code嗎~
07/27 22:56, 4F

07/28 11:27, 6年前 , 5F

07/28 11:28, 6年前 , 6F
忘記哪裡看到的chunks是json reader可是不知道怎麼用
07/28 11:28, 6F

07/28 11:31, 6年前 , 7F
昨天查到改成64bit用ijson勉強可以讀進去 不過非常的慢
07/28 11:31, 7F
s ※ 編輯: energyaxd (49.217.85.245 臺灣), 07/28/2019 12:01:06

07/28 12:03, 6年前 , 8F

07/28 12:05, 6年前 , 9F
07/28 12:05, 9F

07/28 12:07, 6年前 , 10F
錯誤訊息看起來是內容不太能parse?
07/28 12:07, 10F

07/28 12:10, 6年前 , 11F
BTW 上面連結你也許可以參考
07/28 12:10, 11F

07/28 15:16, 6年前 , 12F
謝謝 我再研究看看
07/28 15:16, 12F

07/28 22:51, 6年前 , 13F
檔案多大 記憶體多大
07/28 22:51, 13F

07/29 18:28, 6年前 , 14F
2G的json 16G的Ram
07/29 18:28, 14F

07/30 00:14, 6年前 , 15F
30萬列要2g???
07/30 00:14, 15F

07/30 16:32, 6年前 , 16F
有些欄位是文章 或是回覆組成的list
07/30 16:32, 16F

07/30 16:33, 6年前 , 17F
不知道是不是要找別的方式分析處理?
07/30 16:33, 17F

07/30 21:18, 6年前 , 18F
網路上有類似的討論
07/30 21:18, 18F

07/30 21:23, 6年前 , 19F
giga byte 級的 json 是不是 JSONL 格式?
07/30 21:23, 19F

07/30 21:26, 6年前 , 20F
可以試試看 json_lines https://bit.ly/2Mschgs
07/30 21:26, 20F

07/30 21:27, 6年前 , 21F
因為是逐行讀入,所以可以避開佔用 memory 的問題
07/30 21:27, 21F

07/30 21:28, 6年前 , 22F
資料會因為物件結構不同使得 memory size 倍數成長
07/30 21:28, 22F
文章代碼(AID): #1TE_cuye (Python)
文章代碼(AID): #1TE_cuye (Python)