作者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/cn.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