看板 Python 關於我們 聯絡資訊
我新手學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
TitanEric: 查了一下官網 有chunk_size可以指定 也許會好一點07/27 20:17
energyaxd: 我照找到的範例做過for chunk in chunks 這邊就會error07/27 21:18
energyaxd: 好像是說chunks不能迭代 我也不懂...07/27 21:18
TitanEric: 可以貼一下你嘗試的code嗎~07/27 22:56
energyaxd: https://i.imgur.com/spQh4yr.jpg07/28 11:27
energyaxd: 忘記哪裡看到的chunks是json reader可是不知道怎麼用07/28 11:28
energyaxd: 昨天查到改成64bit用ijson勉強可以讀進去 不過非常的慢07/28 11:31
s ※ 編輯: energyaxd (49.217.85.245 臺灣), 07/28/2019 12:01:06
energyaxd: https://i.imgur.com/lWQCJdS.jpg 07/28 12:03
TitanEric: https://bit.ly/2Y4zL2e 07/28 12:05
TitanEric: 錯誤訊息看起來是內容不太能parse? 07/28 12:07
TitanEric: BTW 上面連結你也許可以參考 07/28 12:10
energyaxd: 謝謝 我再研究看看 07/28 15:16
sherees: 檔案多大 記憶體多大 07/28 22:51
energyaxd: 2G的json 16G的Ram 07/29 18:28
ssivart: 30萬列要2g??? 07/30 00:14
energyaxd: 有些欄位是文章 或是回覆組成的list 07/30 16:32
energyaxd: 不知道是不是要找別的方式分析處理? 07/30 16:33
s860134: 網路上有類似的討論 07/30 21:18
s860134: giga byte 級的 json 是不是 JSONL 格式? 07/30 21:23
s860134: 可以試試看 json_lines https://bit.ly/2Mschgs 07/30 21:26
s860134: 因為是逐行讀入,所以可以避開佔用 memory 的問題 07/30 21:27
s860134: 資料會因為物件結構不同使得 memory size 倍數成長 07/30 21:28