【发布时间】:2019-11-06 17:39:20
【问题描述】:
我正在尝试将包含事件 Web 数据的 12,000 个 JSON 文件转换为单个 pandas 数据帧。 代码运行时间过长。 关于如何提高效率的任何想法?
加载的 JSON 文件示例:
{'$schema': 12,
'amplitude_id': None,
'app': '',
'city': ' ',
'device_carrier': None,
'dma': ' ',
'event_time': '2018-03-12 22:00:01.646000',
'group_properties': {'[Segment] Group': {'': {}}},
'ip_address': ' ',
'os_version': None,
'paying': None,
'platform': 'analytics-ruby',
'processed_time': '2018-03-12 22:00:06.004940',
'server_received_time': '2018-03-12 22:00:02.993000',
'user_creation_time': '2018-01-12 18:57:20.212000',
'user_id': ' ',
'user_properties': {'initial_referrer': '',
'last_name': '',
'organization_id': 2},
'uuid': ' ',
'version_name': None}
谢谢!
import os
import pandas as pd
data = pd.DataFrame()
for filename in os.listdir('path'):
file = open(filename, "r")
file_read1 = file.read()
file_read1 = pd.read_json(file_read1, lines = True)
data = data.append(file_read1, ignore_index = True)
【问题讨论】:
-
您能否举例说明文件和 JSON 格式中的数据是什么样的?构建一个大型 json 然后将其制成 Dataframe 可能会更快。此方法也可能导致内存问题,因为它会创建一个新的数据框对象 12,000 次。
-
请将其编辑到您的原始问题中,cmets 不适合显示数据或格式
-
是的,不要在循环中使用
.append数据帧。这是非常低效的。创建一个数据框列表,然后在结果列表中使用pd.concat。
标签: python json pandas performance