在 python 中处理大量 JSON 数据
Handling with large JSON data in python
我的 JSON (~500mb) 文件有多个 JSON 对象,实际上我只需要使用 "customer_id" 列。当我执行下面的代码时,它会出现内存错误。
with open('online_pageviews.json') as f:
online_pageviews = pd.DataFrame(json.loads(line) for line in f)
这是 "online_pageviews.json"
中 JSON 对象的示例
{
"date": "2018-08-01",
"visitor_id": "3832636531373538373137373",
"deviceType": "mobile",
"pageType": "product",
"category_id": "6365313034",
"on_product_id": "323239323839626",
"customer_id": "33343163316564313264"
}
有没有办法只使用 "customer_id" 列?
我该怎么做才能加载此文件?
如果您能管理实际流动的数据量,您应该能够做到这一点。由于您只需要客户 ID,所以不必费心将任何其他数据加载到您的数据框中。
customer_id_array = []
with open('online_pageviews.json') as f:
for line in f:
customer_id_array.append(json.loads(line)['customer_id'])
online_pageviews = pd.DataFrame(customer_id_array,columns = ['customer_id'])
这种方式可以显着减少您之前使用的额外内存量。
(我不确定您的系统是否能够处理这个问题,因为 customer_id_array
仍然可以变得相当大,但它应该比以前好得多。如果不能,您可能需要寻找一些在线选项用于租用具有更多内存的系统。)
我的 JSON (~500mb) 文件有多个 JSON 对象,实际上我只需要使用 "customer_id" 列。当我执行下面的代码时,它会出现内存错误。
with open('online_pageviews.json') as f:
online_pageviews = pd.DataFrame(json.loads(line) for line in f)
这是 "online_pageviews.json"
中 JSON 对象的示例{
"date": "2018-08-01",
"visitor_id": "3832636531373538373137373",
"deviceType": "mobile",
"pageType": "product",
"category_id": "6365313034",
"on_product_id": "323239323839626",
"customer_id": "33343163316564313264"
}
有没有办法只使用 "customer_id" 列? 我该怎么做才能加载此文件?
如果您能管理实际流动的数据量,您应该能够做到这一点。由于您只需要客户 ID,所以不必费心将任何其他数据加载到您的数据框中。
customer_id_array = []
with open('online_pageviews.json') as f:
for line in f:
customer_id_array.append(json.loads(line)['customer_id'])
online_pageviews = pd.DataFrame(customer_id_array,columns = ['customer_id'])
这种方式可以显着减少您之前使用的额外内存量。
(我不确定您的系统是否能够处理这个问题,因为 customer_id_array
仍然可以变得相当大,但它应该比以前好得多。如果不能,您可能需要寻找一些在线选项用于租用具有更多内存的系统。)