#python #pandas #dask #large-data #vaex
#python #pandas #dask #большие данные #vaex
Вопрос:
У меня более 10 ГБ данных о транзакциях, я использовал DASK для чтения данных, выбора интересующих меня столбцов, а также группирования по нужным столбцам. Все это было невероятно быстро, но вычисления работали плохо, и отладка была сложной.
Затем я решил открыть свои данные с помощью PANDAS chunksize, разделив мои данные на миллион. А затем использовал VAEX для объединения файлов в один большой файл HDF5. До сих пор все шло хорошо, но когда я пытаюсь сгруппировать свои столбцы и превысить 50 Тыс. Данных, мой код вылетает. Мне было интересно, как с этим справиться … должен ли я группировать каждый фрагмент pandas, прежде чем объединять их в vaex dataframe или можно преобразовать мой vaex dataframe в dask dataframe, groupby, а затем преобразовать сгруппированный по dataframe в vaex, который более удобен для меня, поскольку он похож на pandas.
path=....
cols=['client_1_id','amount', 'client_2_id', 'transaction_direction']
chunksize = 10**6
df = pd.read_csv(path,
iterator=True,
sep='t',
usecols=cols,
chunksize=chunksize,
error_bad_lines=False)
import vaex
# Step 1: export to hdf5 chunks
for i, chunk in enumerate(df):
print(i)
df_chunk = vaex.from_pandas(chunk, copy_index=False)
df_chunk.export_hdf5(f'dfv_{i}.hdf5')
dfv = vaex.open('dfv_*.hdf5')
# Step 2: Combine back into one big hdf5 file
dfv.export_hdf5('dfv.hdf5')
dfv=vaex.open('dfv.hdf5')
это мой первый пост, извините, если недостаточно подробностей, или если я неясен, пожалуйста, не стесняйтесь задавать мне любые вопросы.
Комментарии:
1. «вычисления работали плохо» — если вы спрашиваете о dask, вы должны сказать, что вы сделали и что пошло не так. Если нет, то удалите эту часть как неактуальную.
2. я не уточнял это, поскольку не понимал, почему это не работает. На самом деле каждый раз, когда я выполнял df.compute(), он выполнялся очень долго, прежде чем выдать мне «недопустимый аргумент», но я понятия не имею, что было не так. Я сохранил dask в названии, так как мне было интересно, следует ли мне все еще использовать его для создания groupby и можно ли перейти от фрейма данных dask к фрейму данных vaex.
3. Dask должен быть в состоянии делать то, что вы хотите, сам по себе, но мы не можем помочь без дополнительной конкретики. Действительно, в конечном итоге вы загружаете большой файл и … что потом? Зачем вам вообще нужен один большой файл?
4. моя цель — использовать данные транзакций для создания большого графика социальной сети, если у меня нет всех данных в одном файле, я могу пропустить некоторые связи между людьми. Я продолжал попытки с dask, и я знаю, что мне нужно быть более конкретным в отношении ошибки, чтобы получить помощь, но я не знаю, почему мое ядро умирает каждый раз, когда я пытаюсь вычислить свой фрейм данных dask. с VAEX все работает нормально, кроме groupby. итак, мой вопрос в том, как преобразовать groupby фрейма данных dask в файл HDF5, который можно открыть с помощью vaex?
5. Я все еще подозреваю, что вы задаете неправильный вопрос. «за исключением groupby» — самая большая часть использования памяти, что, вероятно, также является проблемой для dask.