Я думаю, что это больше связано с использованием двух стратегически и смещающихся данных (от numpy до pandas или наоборот) в зависимости от производительности, которую вы видите. В качестве недавнего примера я пытался объединить 4 маленьких файла pickle с 10k строками каждый data.shape -> (10,000, 4)
с помощью numpy.
Код был примерно таким:
n_concat = np.empty((0,4))
for file_path in glob.glob('data/0*', recursive=False):
n_data = joblib.load(file_path)
n_concat = np.vstack((co_np, filtered_snp))
joblib.dump(co_np, 'data/save_file.pkl', compress = True)
Это разбило мой ноутбук (8 ГБ, i5), что было удивительно, поскольку объем не был действительно , что огромный. 4 сжатых маринованных файла были примерно около 5 МБ каждый.
То же самое, отлично работает на пандах.
for file_path in glob.glob('data/0*', recursive=False):
n_data = joblib.load(sd)
try:
df = pd.concat([df, pd.DataFrame(n_data, columns = [...])])
except NameError:
df = pd.concat([pd.DataFrame(n_data,columns = [...])])
joblib.dump(df, 'data/save_file.pkl', compress = True)
С другой стороны, когда я выполнял градиентный спуск по итерации по кадру данных pandas, он был ужасно медленным, а использование numpy для задания было намного быстрее.
В общем, я видел, что панды обычно лучше работают, перемещаясь / перемещая умеренно большие куски данные и выполнение общих операций с столбцами, в то время как numpy лучше всего подходит для векторизованной и рекурсивной работы (возможно, более интенсивной работы с математикой) по более мелким наборам данных.
Перемещение данных между этими двумя является беспроблемным, так что, полагаю, стратегически - путь.