Как выполнить слияние (слишком) больших фреймов данных? - PullRequest
0 голосов
/ 12 марта 2019

Я пытаюсь объединить пару информационных фреймов из HomeCredit Kaggle в соответствии со схемой данных .Я сделал следующее:

train = pd.read_csv('~/Documents/HomeCredit/application_train.csv')
bureau = pd.read_csv('~/Documents/HomeCredit/bureau.csv')
bureau_balance = pd.read_csv('~/Documents/HomeCredit/bureau_balance.csv')

train = train.merge(bureau,how='outer',left_on=['SK_ID_CURR'],right_on=['SK_ID_CURR'])
train = train.merge(bureau_balance,how='inner',left_on=['SK_ID_BUREAU'],right_on=['SK_ID_BUREAU'])

, который завершается ошибкой при

MemoryError

для второго слияния.Фрейм данных поезда имеет форму (308k, 122), бюро (1.72M, 12) и bureau_balance (27.3M, 3).Насколько я понимаю, приложение из поезда df не обязательно должно иметь запись в таблице burea, но все строки в этой таблице должны иметь запись в bureau_balance.

Я запускаю код в своем локальном экземплярес 16 ГБ ОЗУ.

Есть ли способ, как справиться с проблемой памяти с таким большим набором данных?

Заранее спасибо.

1 Ответ

1 голос
/ 12 марта 2019

После определенной проблемы размер панд не подходит. Я бы импортировал данные в реляционную базу данных и выполнял SQL-запросы. Sqlalchemy - хороший инструмент для работы с базами данных на python.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...