Je suis en train de faire quelque chose d'assez simple, la lecture d'un gros fichier csv dans une pandas dataframe.
C'est ce que je suis en utilisant pour ce faire:
data = pandas.read_csv(filepath, header = 0, sep = DELIMITER,skiprows = 2)
Le code se comporte assez erratique. Soit il échoue avec une erreur de mémoire (message d'erreur détaillé que P. S.), ou tout simplement ne se termine jamais (Mem utilisation dans le gestionnaire des tâches arrêté à 506 Mo et après 5 minutes sans aucun changement et aucune activité du PROCESSEUR dans le processus, j'ai arrêté).
Je suis à l'aide de pandas version 0.11.0. Je suis conscient qu'il y avait un problème de mémoire avec l'analyseur de fichier, mais selon http://wesmckinney.com/blog/?p=543 ce qui devrait avoir été corrigé. Le fichier que je suis en train de lire, 366 Mo, le code ci-dessus fonctionne, si je coupe le fichier vers quelque chose de court (25 Mo). Il est également arrivé que je reçois un message me disant qu'il ne peut pas écrire à l'adresse 0x1e0baf93...
Je suis en cours d'exécution le code de débogage dans Visual Studio, à l'aide de l'Anaconda et PTVS (l'étape-par-étape de débogage, F5).
Un peu de fond - je suis en train d'essayer de convaincre les gens que Python peut faire la même chose que R. Pour cela, je suis en train de reproduire un script R qui ne
data <- read.table(paste(INPUTDIR,config[i,]$TOEXTRACT,sep=""), HASHEADER, DELIMITER,skip=2,fill=TRUE)
R non seulement parvient à lire le fichier ci-dessus très bien, il lit même plusieurs de ces fichiers dans une boucle for (puis fait quelques trucs avec les données). Si Python n'ont un problème avec les fichiers de cette taille, j'ai peut-être un combat de perdre la bataille...
Toutes les idées sur ce qui va mal la bienvenue!
Merci, Anne
P. S. Voici les détails de la mémoire d'erreur dans le cas où il permet de:
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 . . .