我需要根据不同场景分析大型数据帧,并且我正在寻找一种方法(如果可能的话)(轻松)加快流程。
基本上我的代码就像(真的,非常简化);
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randint(0,10,size=(10, 4)), columns=list('ABCD'))
dict_x = {}
for x in range(0, 10):
dict_y = {}
for y in range(0, 10):
for i in range(0, len(df)):
df.loc[i, 'E'] = ((df.loc[i, 'A'] * df.loc[i, 'B']) * x) + y
dict_y[y] = df
dict_x[x] = dict_y
由于场景的数量,需要很长时间才能运行。每个场景都独立于其他场景。有没有办法提高速度?就像启用python一次使用多个核心/分析多个场景一样,或者其他什么
我看了一下多处理模块,但我无法理解如何应用它。我对Python很陌生,所以我可能错过了一些基本的东西。
****编辑**:更新了代码示例,希望更容易理解我想要实现的目标。由于系统需要传感器和计算的数量,以及一个月内每分钟的数据,实际代码要长得多。
答案 0 :(得分:0)
您可以使用两件事:
开头,矢量化:使用numpy库进行循环乘法/加法和其他数学运算。这会将你的时间缩短1000倍(可能会大于)
您可以处理的其他区域是数据的并行处理,这些处理彼此独立。请参阅多线程和多处理的文档。