2012-01-21 2 views
1

Следующий код должен делать то, что я хочу, но он занимает 10 гб оперативной памяти к моменту 20% выполнения цикла.DataFrame to Panel, индексированный неодинарным столбцом с Pandas

# In [4]: type(pd) 
# Out[4]: pandas.sparse.frame.SparseDataFrame 
memid = unique(pd.Member) 
pan = {} 
for mem in memid: 
    pan[mem] = pd[pd.Member==mem] 
goal = pandas.Panel(pan) 
+0

Каковы размеры ('pd.shape') и плотности (' pd.density') в SparseDataFrame? Любые изменения вы можете отправить мне по электронной почте рассол объекта ('pd.save (file_path)'), чтобы я мог попытаться диагностировать, что происходит? Кстати, эти вопросы будут лучше заданы в списке рассылки, чем SO. –

+0

pd.shape = (2668990, 232) –

+0

pd.density = 0.12814551216649045 Файл слишком велик для отправки по электронной почте. –

ответ

2

Я создал здесь проблему GitHub.

https://github.com/wesm/pandas/issues/663

Я уверен, что я определил циклическую ссылку между видами Numpy ndarray вызывая утечку памяти. Просто совершил исправление:

https://github.com/wesm/pandas/commit/4c3916310a86c3e4dab6d30858a984a6f4a64103

Вы можете установить от источника и дайте мне знать, если это исправляет проблему?

Кстати, вы можете попробовать использовать SparsePanel вместо Panel, потому что Panel преобразует все суб-DataFrames в плотную форму.

Наконец, вы можете рассмотреть возможность использования groupby в качестве альтернативы измельчению SparseDataFrame. Это еще короче:

pan = dict(pd.groupby('Member'))

+0

Версия, которую я запускаю, - это клон git от прошлой ночи. Спасибо, на SparsePanel. Когда я запускаю pan = dict (pd.groupby ('Member')), я получаю: RuntimeError: максимальная глубина рекурсии превышена при вызове объекта Python. Фактический объект занимает менее 1 гб при загрузке, но цикл заставляет баран медленно съедать. Теперь я буду направлять свои вопросы в список рассылки. –

+0

Должна быть проблема groupby с SparseDataFrame. Я должен буду посмотреть. Если бы вы могли каким-то образом получить мне gzip pickle из SparseDataFrame каким-то образом (он должен быть меньше 100 мегабайт), я могу поближе посмотреть –

Смежные вопросы