gpt4 book ai didi

python - SQL 数据库是否比大型 Pandas 数据框的内存/性能效率更高?

转载 作者:搜寻专家 更新时间:2023-10-30 23:28:40 25 4
gpt4 key购买 nike

我有超过 6000 个 XML 想要解析并保存为 csv(或任何其他存储方式)。

我需要为每个 XML 执行 JOIN 以将它们连接到大数据框。

问题是这个过程需要很长时间并且使用了太多内存。

请问sql能解决问题吗?更快和更少的内存消耗?

def get_data(lst):
results = pd.DataFrame()
errors = []

for data in lst:
try:
df = parseXML_Annual(data)
try:
results = results.join(df, how = "outer")
except:
results = df
except:
errors.append(data)

return results, errors

results, errors = get_data(lst_result)

最佳答案

正如我从您的示例中看到的,整个 XML 文件都与同一家公司相关。对我来说,听起来您需要添加一个新行,而不是将其作为表格加入。据我了解,您想为每家公司提供一些指标列表。如果是这样,您可能可以坚持使用键值存储。如果 python 是您的主要工具,请使用字典,然后将其保存为 JSON 文件。在您的 for 循环中,只需使用来自 XML 的数据填充一个空白字典,如下所示:

report = {

"apple": {
'metricSet1': {"m11": 5, "m12": 2, "m13": 3},
'metricSet2': {"m21": 4, "m22": 5, "m23": 6}
},

"google": {
'metricSet1': {"m11": 1, "m12": 13, "m13": 3},
'metricSet2': {"m21": 9, "m22": 0, "m23": 11}
},

"facebook": {
'metricSet1': {"m11": 1, "m12": 9, "m13": 9},
'metricSet2': {"m21": 7, "m22": 2, "m23": 4}
}

当你需要查询它或用数据填充一些表时,做这样的事情:

for k in report.keys():
row = [
k,
report[k]["metricSet1"]["m12"],
report[k]["metricSet2"]["m22"],
report[k]["metricSet2"]["m23"]
]
print(row)

如果数据结构没有改变(假设所有这些 XML 都是相同的),那么将其存储在 SQL 数据库中,为每个指标集创建一个表是有意义的。如果 XML 结构可能不同,那么只需将其保存为 json 文件,或者可能保存在一些基于键值对的数据库中,例如 mongo

关于python - SQL 数据库是否比大型 Pandas 数据框的内存/性能效率更高?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52546519/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com