У меня есть большие файлы размером более 5 ГБ.Я сохранил их в формате паркета.Когда я выполняю групповую операцию, как показано ниже, для небольшого набора записей из 600 тысяч записей, Dask занимает больше 6 минут, тогда как pandas занимал всего 0,4 секунды.Хотя я понимаю, что pandas работает быстрее, если набор данных помещается в память, но мой вопрос: если я передам весь файл паркета в Dask dataframe, улучшится ли производительность?
Также предложите мне, как улучшить приведенный ниже код, чтобы я мог работать за несколько секунд, а не за минуты.
Пример: использование Dask Dataframe
StartTime = datetime.datetime.now()
df = dd.read_parquet('201908.parquet', columns=['A', 'B'], engine='pyarrow')
print (len(df))
df = df.set_index ('A')
rs = df.groupby('A').B.nunique().nlargest(10).compute(scheduler='processes')
print (rs)
EndTime = datetime.datetime.now()
print ("Total Time Taken for processing: " + str(EndTime - StartTime))
Выводis:
606995
A
-3868378286825833950 7
1230391617280615928 7
381683316762598393 6
-5730635895723403090 5
903278193888929465 5
2861437302225712286 5
-9057855329515864244 4
-8963355998258854688 4
-7876321060385968364 4
-6825439721748529898 4
Name: B, dtype: int64
Total Time Taken for processing: 0:06:05.042146
Пример использования Pandas:
StartTime = datetime.datetime.now()
df = pd.read_parquet('201908.parquet', columns=['A', 'B'], engine='pyarrow')
print (len(df))
df = df.set_index ('A')
rs = df.groupby('A').B.nunique().nlargest(10)
print (rs)
EndTime = datetime.datetime.now()
print ("Total Time Taken for processing: " + str(EndTime - StartTime))
Вывод:
606995
A
-3868378286825833950 7
1230391617280615928 7
381683316762598393 6
-5730635895723403090 5
903278193888929465 5
2861437302225712286 5
-9057855329515864244 4
-8963355998258854688 4
-7876321060385968364 4
-6825439721748529898 4
Name: B, dtype: int64
Total Time Taken for processing: 0:00:00.419033