如何使代码在速度方面更有效率
How to make code more efficient in terms of speed
假设我们有一个名为 pickle_list.pkl
的 pickle 文件,其中包含 23 个 pandas 数据帧。 df_combined
也是所有这些数据帧的串联。假设df_combined
的形状是(1000000, 5000)
。 运行 以下代码块是否有更有效的方法?也许某种类型的并行化可以工作?
现在它在第 69000 行,已经 运行 一天了。
import pickle
import pandas as pd
df_list = pd.read_pickle(r'pickle_list.pkl')
df_combined = pd.concat(df_list, ignore_index=True)
for row in df_combined.itertuples():
print(row.Index)
id = row.id
df_test= df_combined[df_combined['id']==str(id)]
您可以使用 groupby
高效地创建字典,然后用于快速获取所需的标识符。这是一个未经测试的例子来展示这个想法:
import pickle
import pandas as pd
df_list = pd.read_pickle(r'pickle_list.pkl')
df_combined = pd.concat(df_list, ignore_index=True)
all_groups = {ident:df for ident,df in df_combined.groupby('id')}
for row in df_combined.itertuples():
id = row.id
# You may need to add a condition before if the searched ID does not exist
df_test = all_groups[str(id)]
假设我们有一个名为 pickle_list.pkl
的 pickle 文件,其中包含 23 个 pandas 数据帧。 df_combined
也是所有这些数据帧的串联。假设df_combined
的形状是(1000000, 5000)
。 运行 以下代码块是否有更有效的方法?也许某种类型的并行化可以工作?
现在它在第 69000 行,已经 运行 一天了。
import pickle
import pandas as pd
df_list = pd.read_pickle(r'pickle_list.pkl')
df_combined = pd.concat(df_list, ignore_index=True)
for row in df_combined.itertuples():
print(row.Index)
id = row.id
df_test= df_combined[df_combined['id']==str(id)]
您可以使用 groupby
高效地创建字典,然后用于快速获取所需的标识符。这是一个未经测试的例子来展示这个想法:
import pickle
import pandas as pd
df_list = pd.read_pickle(r'pickle_list.pkl')
df_combined = pd.concat(df_list, ignore_index=True)
all_groups = {ident:df for ident,df in df_combined.groupby('id')}
for row in df_combined.itertuples():
id = row.id
# You may need to add a condition before if the searched ID does not exist
df_test = all_groups[str(id)]