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