À l'aide de genfromtxt pour importer des données au format csv, avec des valeurs manquantes dans numpy
J'ai un fichier csv qui ressemble à quelque chose comme ceci (fichier réel a beaucoup plus de colonnes et de lignes):
1,2,3,4,5
6,7,8,9,10
11,12,13,14,15
16
Dire le nom du fichier est info.csv
Si j'essaie de l'importer à l'aide de
data = numpy.genfromtxt('info.csv', delimiter = ',')
puis j'obtiens l'erreur suivante:
ValueError: Some errors were detected ! Line #4 (got 1 columns instead of 5)
Si je l'utilise,
data = numpy.genfromtxt('info.csv', delimiter = ',', skip_footer = 1)
les deux lignes avec des données 16
et avec des données 11, 12, 13, 14, 15
sont ignorés. Je ne comprends pas pourquoi la ligne avec 11, 12, 13, 14, 15
est ignorée. Je vous serais reconnaissant de toute aide sur comment je peux utiliser de façon appropriée les genfromtxt
pour importer des trois premières lignes dans le fichier ci-dessus.
Grâce
OriginalL'auteur Curious2learn | 2010-09-21
Vous devez vous connecter pour publier un commentaire.
si vous pouvez ignorer le 16 à la fin du fichier, essayez d'utiliser le
invalid_raise
(bool, en option) paramètresi la valeur est False, il ignore toutes les lignes incomplètes, sans jeter une exception
voir ici (le dernier paramètre avant les exemples)
http://docs.scipy.org/doc/numpy/reference/generated/numpy.genfromtxt.html
il saute 2 lignes, becaus genformtxt lit de la validité de lignes dans un tableau, puis saute comme mamy que vous lui avez dit, mais la ligne avec '16" n'est jamais lue dans le tableau
vous pouvez essayer le "filling_values" ou "missing_values' paramètre pour combler le manque 4 valeurs dans la ligne avec '16', par exemple, -1 ou 0 en fonction de ce que vous faites avec votre tableau après l'avoir lu à partir du disque
pouvez-vous expliquer comment utiliser filling_values. J'ai essayé,
numpy.genfromtxt('info.csv', delimiter = ',', filling_values = 0)
. Cependant, qui donne toujours la même erreur.ok - j'ai vérifié le code de numpy maintenant, filling_values peuvent être utilisés pour combler les vides de valeurs - si votre dernière ligne ressemble '16,,,," remplissage combler le vide des valeurs. si la ligne n'a pas de délimiteurs genfromtxt ne peut pas l'analyser
OriginalL'auteur Nikolaus Gradwohl
La commande
filling_values
m'a aussi aidé. Je l'ai mis à zéro. Ainsi, chaque valeur vide est défini à zéro. Il n'a probablement pas toujours logique, mais peut-être que ça va vous aider.OriginalL'auteur Dark