SORU
9 Temmuz 2013, Salı


Ne zaman pandalar read_csv kullanarak bellek hatası

Bir şey oldukça basit, pandalar bir dataframe büyük bir csv dosyası okuma yapmaya çalışıyorum.

data = pandas.read_csv(filepath, header = 0, sep = DELIMITER,skiprows = 2)

* *4, ya da sadece bir başarısız ya da kod bitmez.

Görev yöneticisinde bellek kullanımı durdurdum sürece hiçbir değişim 5 dakika ve hiçbir CPU aktivite sonrası 506 Mb ve durdu.

Pandalar sürüm 0.11.0 kullanıyorum.

Dosya ayrıştırıcısı ile bellek sorunu vardı farkındayım, ama görehttp://wesmckinney.com/blog/?p=543bu giderildi.

Okumaya çalışıyorum dosya 366 Mb kod dosyası aşağı kısa bir şeyler (25) Mb kesersem üstünde çalışıyor.

Yazmak için değil bana açılır Adres 0x1e0baf93... olsun o da oldu

Stacktrace:

Traceback (most recent call last):
  File "F:\QA ALM\Python\new WIM data\new WIM data\new_WIM_data.py", line 25, in
 <module>
    wimdata = pandas.read_csv(filepath, header = 0, sep = DELIMITER,skiprows = 2
)
  File "C:\Program Files\Python\Anaconda\lib\site-packages\pandas\io\parsers.py"
, line 401, in parser_f
    return _read(filepath_or_buffer, kwds)
  File "C:\Program Files\Python\Anaconda\lib\site-packages\pandas\io\parsers.py"
, line 216, in _read
    return parser.read()
  File "C:\Program Files\Python\Anaconda\lib\site-packages\pandas\io\parsers.py"
, line 643, in read
    df = DataFrame(col_dict, columns=columns, index=index)
  File "C:\Program Files\Python\Anaconda\lib\site-packages\pandas\core\frame.py"
, line 394, in __init__
    mgr = self._init_dict(data, index, columns, dtype=dtype)
  File "C:\Program Files\Python\Anaconda\lib\site-packages\pandas\core\frame.py"
, line 525, in _init_dict
    dtype=dtype)
  File "C:\Program Files\Python\Anaconda\lib\site-packages\pandas\core\frame.py"
, line 5338, in _arrays_to_mgr
    return create_block_manager_from_arrays(arrays, arr_names, axes)
  File "C:\Program Files\Python\Anaconda\lib\site-packages\pandas\core\internals
.py", line 1820, in create_block_manager_from_arrays
    blocks = form_blocks(arrays, names, axes)
  File "C:\Program Files\Python\Anaconda\lib\site-packages\pandas\core\internals
.py", line 1872, in form_blocks
    float_blocks = _multi_blockify(float_items, items)
  File "C:\Program Files\Python\Anaconda\lib\site-packages\pandas\core\internals
.py", line 1930, in _multi_blockify
    block_items, values = _stack_arrays(list(tup_block), ref_items, dtype)
  File "C:\Program Files\Python\Anaconda\lib\site-packages\pandas\core\internals
.py", line 1962, in _stack_arrays
    stacked = np.empty(shape, dtype=dtype)
MemoryError
Press any key to continue . . .

Arka plan biraz - Python mu R bir komut çoğaltmak için çalışıyorum bunun İçin R. olarak aynı olabilir insanları ikna etmeye çalışıyorum

data <- read.table(paste(INPUTDIR,config[i,]$TOEXTRACT,sep=""), HASHEADER, DELIMITER,skip=2,fill=TRUE)

R sadece yukarıda okumak için yönetir iyi bir dosya değil, hatta döngü (ve daha sonra bu verilerle bir şeyler yapar) için bu dosyaları birkaç okur. Eğer Python bu boyuttaki dosyalar ile ilgili bir sorun varsa kaybedilen bir mücadele olabilir

CEVAP
4 ŞUBAT 2014, Salı


Pandalar 0.12.0 ve NumPy 1.8.0 hata yok.

Büyük bir DataFrame oluşturun ve csv dosyası olarak Kaydet ve başarılı bir şekilde oku sonra başardım. Örnek here bakın lütfen. Dosya boyutu 554) (hatta 1.1 Gb dosya için çalıştı, uzun, 1.1 Gb dosya oluşturmak için aldı 30 saniye frekans kullanın). Mevcut 4 gb RAM var ama.

Benim önerim Pandalar güncellemeyi deneyin. Başka bir şey olabilir yararlı olduğunu denemek için çalışan komut dosyası, komut satırı, çünkü R için kullandığınız Visual Studio (bu zaten önerilmişti açıklamaları için soru sorma), bu yüzden vardır daha fazla kaynak kullanılabilir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Elliot Davin

    Elliot Davin

    28 Kasım 2008
  • Pocketnow

    Pocketnow

    14 EKİM 2007
  • talkandroid

    talkandroid

    27 Mayıs 2010