Необходимо уменьшить использование памяти при использовании pd.concat () на нескольких df - PullRequest
0 голосов
/ 08 июня 2018

Мне нужно прочитать несколько больших .csv (20k строк x 6k столбцов) и сохранить их в фрейме данных.

Этот поток имеет отличные примеры, которые сработали для меня вПрошлое с меньшими файлами.

Например:

pd.concat((pd.read_csv(f,index_col='Unnamed: 0') for f in file_list))

Другие более прямые подходы, которые я попробовал:

frame = pd.DataFrame()
list_ = []
for file_ in file_list:
    print(file_)
    df = pd.read_csv(file_,index_col=0)
    list_.append(df)
df = pd.concat(list_)

Однако все решения вращаются вокруг созданиясписок всех файлов csv как отдельных df, а затем, используя pd.concat() в конце над всеми df.

Насколько я могу судить, именно этот подход вызывает ошибку памяти при конкатенации ~20 из этих df.

  • Как я могу пройти через это и, возможно, добавить каждый df, как я иду?

Пример file_list:

/realtimedata/orderbooks/bitfinex/btcusd/bitfinex_btcusd_orderbook_2018_05_26.csv
/realtimedata/orderbooks/bitfinex/btcusd/bitfinex_btcusd_orderbook_2018_05_30.csv
/realtimedata/orderbooks/bitfinex/btcusd/bitfinex_btcusd_orderbook_2018_05_25.csv
/realtimedata/orderbooks/bitfinex/btcusd/bitfinex_btcusd_orderbook_2018_05_19.csv
/realtimedata/orderbooks/bitfinex/btcusd/bitfinex_btcusd_orderbook_2018_05_27.csv
/realtimedata/orderbooks/bitfinex/btcusd/bitfinex_btcusd_orderbook_2018_05_18.csv
/realtimedata/orderbooks/bitfinex/btcusd/bitfinex_btcusd_orderbook_2018_05_28.csv
/realtimedata/orderbooks/bitfinex/btcusd/bitfinex_btcusd_orderbook_2018_05_23.csv
/realtimedata/orderbooks/bitfinex/btcusd/bitfinex_btcusd_orderbook_2018_06_03.csv
/realtimedata/orderbooks/bitfinex/btcusd/bitfinex_btcusd_orderbook_2018_05_24.csv
/realtimedata/orderbooks/bitfinex/btcusd/bitfinex_btcusd_orderbook_2018_05_29.csv
/realtimedata/orderbooks/bitfinex/btcusd/bitfinex_btcusd_orderbook_2018_06_04.csv
/realtimedata/orderbooks/bitfinex/btcusd/bitfinex_btcusd_orderbook_2018_05_20.csv
/realtimedata/orderbooks/bitfinex/btcusd/bitfinex_btcusd_orderbook_2018_05_22.csv
/realtimedata/orderbooks/bitfinex/btcusd/bitfinex_btcusd_orderbook_2018_06_06.csv
/realtimedata/orderbooks/bitfinex/btcusd/bitfinex_btcusd_orderbook_2018_06_05.csv
/realtimedata/orderbooks/bitfinex/btcusd/bitfinex_btcusd_orderbook_2018_06_01.csv
/realtimedata/orderbooks/bitfinex/btcusd/bitfinex_btcusd_orderbook_2018_06_02.csv
/realtimedata/orderbooks/bitfinex/btcusd/bitfinex_btcusd_orderbook_2018_05_31.csv
/realtimedata/orderbooks/bitfinex/btcusd/bitfinex_btcusd_orderbook_2018_05_21.csv

1 Ответ

0 голосов
/ 08 июня 2018

Размер ваших CSV по-прежнему управляемый, поэтому я предполагаю, что проблема связана со смещенными заголовками.

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

list_ = []
for file_ in file_list:
    df = pd.read_csv(file_, index_col=0, skiprows=1, header=None)
    list_.append(df)

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