gpt4 book ai didi

Python - 如何有效地遍历字典的子集?

转载 作者:太空宇宙 更新时间:2023-11-04 00:37:57 25 4
gpt4 key购买 nike

我有一本字典,里面有 500 个 DateFrame。每个数据框都有列 'date''num_patients'。我将模型应用于字典中的所有数据帧,但由于字典中的数据量很大,Python 内核崩溃了。

prediction_all = {}
for key, value in dict.items():
model = Prophet(holidays = holidays).fit(value)
future = model.make_future_dataframe(periods = 365)
forecast = model.predict(future)
prediction_all[key] = forecast.tail()

那么,我已经对字典进行了子集化,并将模型应用于每个子集。

dict1 = {k: dict[k] for k in sorted(dict.keys())[:50]}
prediction_dict1 = {}
for key, value in dict1.items():
model = Prophet(holidays = holidays).fit(value)
future = model.make_future_dataframe(periods = 365)
forecast = model.predict(future)
prediction_dict1[key] = forecast.tail()

dict2 = {k: dict[k] for k in sorted(dict.keys())[50:100]}
prediction_dict2 = {}
for key, value in dict2.items():
model = Prophet(holidays = holidays).fit(value)
future = model.make_future_dataframe(periods = 365)
forecast = model.predict(future)
prediction_dict2[key] = forecast.tail()

但是我需要运行上面的代码 10 次,因为我有 500 个数据帧(10 个子集)。有没有更有效的方法来做到这一点?

最佳答案

一个直接的改进是删除 sorted() 和切片步骤,并将其替换为 heapq.nsmallest()这将进行更少的比较。此外,.keys() 不是必需的,因为默认情况下字典会自动迭代它们的键。

替换:

 dict1 = {k: dict[k] for k in sorted(dict.keys())[:50]}
dict2 = {k: dict[k] for k in sorted(dict.keys())[50:100]}

与:

 lowest_keys = heapq.nsmallest(100, dict)
dict1 = {k : dict[k] for k in lowest_keys[:50]}
dict2 = {k : dict[k] for k in lowest_keys[50:100]}

代码中的大 for 循环看起来只需要 .values() 而不是 .items() 因为 key 不需要好像用过了。

关于Python - 如何有效地遍历字典的子集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43097753/

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