Конкатенация дублированных больших фреймов данных: MemoryError - PullRequest
0 голосов
/ 19 октября 2018

Продолжение до: Как я могу сослаться на ключ в кадрах данных Pandas в этом словаре?

Цель по-прежнему заключается в прогнозировании дохода по финансовому году, в котором я разделю доход нановая колонка в зависимости от того, сколько будет собираться в каждом году.У меня есть код (вместе с некоторой помощью), который тянет несколько фреймов данных в один фрейм данных, используя словарь, в который я их поместил, продублированный, за исключением столбца Fiscal Year.Эти кадры данных были затем объединены в один.

Я упростил свой код до следующего:

import pandas as pd
columns = ['ID','Revenue','Fiscal Year']
ID = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Revenue = [1000, 1200, 1300, 100 ,500, 0, 800, 950, 4321, 800]
FY = []
d = {'ID': ID, 'Revenue': Revenue}
df = pd.DataFrame(d)
df['Fiscal Year'] = ''

def df_dict_func(start, end, dataframe):
    date_range = range(start, end + 1)
    dataframe_dict = {}
    for n in date_range:
        sub = dataframe.copy()
        sub['Fiscal Year'] = n
        dataframe_dict[n] = sub
    return dataframe_dict    

df_dict = df_dict_func(2019, 2035, df)
df = pd.concat(df_dict)

Код отлично работает для небольших наборов данных, но когда я расширяю его до большого набора данных, я получаю MemoryError.Есть ли более эффективный способ дублировать результаты кода, избегая при этом проблемы с MemoryError?

Ошибка, которую я получаю, является, в частности, «MemoryError», и это происходит прямо перед тем, как я получаю какой-либо результат от моей команды pd.concat.Каждый из фреймов данных в словаре имеет значительный размер (более 500 МБ).

...