У меня проблема с производительностью при заполнении пропущенных значений в моем наборе данных.Это касается набора данных строк 500 МБ / 5.000.0000 (Kaggle: Expedia 2013).
Было бы проще использовать df.fillna()
, но, похоже, я не могу использовать это, чтобы заполнить каждый NaN другим значением.
Я создал таблицу lookup
:
srch_destination_id | Value
2 0.0110
3 0.0000
5 0.0207
7 NaN
8 NaN
9 NaN
10 0.1500
12 0.0114
Эта таблица содержит в srch_destination_id
соответствующее значение для замены NaN
на dataset
.
# Iterate over dataset row per row. If missing value (NaN), fill in the min. val
# found in lookuptable.
for row in range(len(dataset)):
if pd.isnull(dataset.iloc[row]['prop_location_score2']):
cell = dataset.iloc[row]['srch_destination_id']
df.set_value(row, 'prop_location_score2', lookuptable.loc[cell])
Этот код работает при итерации более 1000 строк, но при итерации по всем 5 миллионам строк мой компьютер никогда не завершает работу (я ждал несколько часов).
Есть ли лучший способ сделать то, что я делаю?Я где-то ошибся?