Как добавить кадр данных Modin pandas к другому?

Я работаю над выполнением вычислений с большими файлами размером 6 ГБ каждый и наткнулся на панды Modin, которые, как я слышал, оптимизированы по сравнению с пандами.

Мне нужно прочитать CSV-файл по частям и выполнить над ним вычисления, добавить его в большой фрейм данных и снова преобразовать большой фрейм данных в файл CSV.

Это отлично работает с Pandas. Но обработка даже небольших файлов занимает слишком много времени. И я даже не могу представить это для файлов 6GB.

Однако, когда я пытаюсь сделать то же самое с modin pandas, он не может добавить кадр данных в большой кадр данных, который я хочу преобразовать в файл csv.

Может ли кто-нибудь предложить альтернативу этому или решение.

Python - 3.6
Pandas - 0.24.2
Modin Pandas - 0.5.2

Код.

import modin.pandas as pd

def calculate_visit_prioritization(df):
    # calculations here
    return df

def get_all_data():
    big_df = pd.DataFrame()
    for df in pd.read_csv('./samp.csv', chunksize=50):
        big_df = big_df.append(calculate_visit_prioritization(df))
    big_df.to_csv('samps3.csv', index=False)

def main():
    get_all_data()

if __name__ == '__main__':
    main()

Ошибка при использовании Modin pandas для добавления фреймов данных.

UserWarning: DataFrame.append для пустого DataFrame по умолчанию для реализации pandas.

Файл "/home/tony/.local/lib/python3.6/site-packages/pandas/core/reshape/concat.py", строка 289, в __init__ поднять TypeError (msg)

TypeError: невозможно объединить объект типа ""; допустимы только объекты pd.Series, pd.DataFrame и pd.Panel (устаревшие)

Я прошел по этой ссылке, где сказано, что функция .append() в pandas частично ( P ) реализована в Modin.


person Underoos    schedule 15.06.2019    source источник


Ответы (1)


USP Модина заключается в том, что единственная разница между pandas и modin pandas заключается в операторе импорта. Чтобы объединить несколько фреймов данных, используйте один вызов pd.concat, а не вызовы N append для повышения производительности.

df_list = []
for df in pd.read_csv('./samp.csv', chunksize=50):
    df_list.append(calculate_visit_prioritization(df))

big_df = pd.concat(df_list, ignore_index=True)
big_df.to_csv('samps3.csv', index=False)

Это также должно изящно обрабатывать пустые суб-DataFrames.

person cs95    schedule 15.06.2019