Я работаю с большим набором панельных данных (продольные данные) с 500 тыс. Наблюдений. В настоящее время я пытаюсь заполнить недостающие данные (не более 30% наблюдений), используя среднее значение до момента времени t каждой переменной. (Причина, по которой я не заполняю данные общим средним значением, состоит в том, чтобы избежать предвзятого отношения, связанного с использованием данных, доступных только в более поздний момент времени.)
Я написал следующую функцию, которая выполняетзадание, но выполняется очень медленно (5 часов для строк по 500 тыс. !!). В общем, я считаю, что заполнение недостающих данных в Pandas - трудоемкая задача в вычислительном отношении. Пожалуйста, расскажите мне, как вы обычно заполняете пропущенные значения, и как вы заставляете его работать быстро
Функция для заполнения средним значением до времени "t":
def meanTillTimeT(x,cols):
start = time.time()
print('Started')
x.reset_index(inplace=True)
for i in cols:
l1 =[]
for j in range(x.shape[0]):
if x.loc[j,i] !=0 and np.isnan(x.loc[j,i]) == False :
l1.append(x.loc[j,i])
elif np.isnan(x.loc[j,i])==True :
x.loc[j,i]=np.mean(l1)
end = time.time()
print("time elapsed:", end - start)
return x