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

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

Links booklink

Contact Us: admin [ a t ] ucptt.com