Я пытаюсь прочитать и обработать параллельно список файлов csv и объединить вывод в один pandas dataframe
для дальнейшей обработки.
Мой рабочий процесс состоит из 3 шагов:
создать серию фреймов данных pandas, прочитав список файлов csv (все с одинаковой структурой)
def loadcsv(filename): df = pd.read_csv(filename) return df
для каждого фрейма данных создайте новый столбец, обработав 2 существующих столбца
def makegeom(a,b): return 'Point(%s %s)' % (a,b)
def applygeom(df): df['Geom']= df.apply(lambda row: makegeom(row['Easting'], row['Northing']), axis=1) return df
объединить все фреймы данных в один фрейм данных
frames = [] for i in csvtest: df = applygeom(loadcsv(i)) frames.append(df) mergedresult1 = pd.concat(frames)
В своем рабочем процессе я использую pandas (каждый файл csv (15) имеет более >> 2 * 10 ^ 6 точек данных), поэтому для завершения требуется время. Я думаю, что этот вид рабочего процесса должен использовать преимущества некоторой параллельной обработки (по крайней мере, для шагов read_csv
и apply
), поэтому я попытался выполнить dask, но не смог использовать его должным образом. В своей попытке я не добился улучшения скорости.
Я сделал простой блокнот, чтобы воспроизвести то, что я делаю:
https://gist.github.com/epifanio/72a48ca970a4291b293851ad29eadb50
Мой вопрос ... каков правильный способ использования dask для выполнения моего варианта использования?