[问题] 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