487 votes

Comment lire csv dans le tableau des enregistrements en numpy?

Je me demande s'il existe un moyen direct d'importer le contenu d'un fichier csv dans un tableau d'enregistrement, de la même manière que la famille read.table (), read.delim () et read.csv () de R importe des données dans R ' trame de données? Ou est la meilleure façon d'utiliser csv.reader () et ensuite appliquer quelque chose comme numpy.core.records.fromrecords ()?

757voto

Andrew Points 2852

Vous pouvez utiliser de Numpy genfromtxt() méthode pour le faire, en réglant le delimiter kwarg à une virgule.

 from numpy import genfromtxt
my_data = genfromtxt('my_file.csv', delimiter=',')
 

Vous trouverez plus d'informations sur cette fonction dans sa documentation respective.

211voto

atomh33ls Points 2461

Je recommande l' read_csv fonction de l' pandas bibliothèque:

import pandas as pd
df=pd.read_csv('myfile.csv', sep=',',header=None)
df.values
array([[ 1. ,  2. ,  3. ],
       [ 4. ,  5.5,  6. ]])

Cela donne une pandas DataFrame - permettant à de nombreuses fonctions de manipulation de données qui ne sont pas directement disponibles avec numpy enregistrement des tableaux.

DataFrame est un 2-dimensions marquées structure de données avec des colonnes de potentiellement différents types. Vous pouvez la considérer comme une feuille de calcul ou Table SQL...


Je voudrais également recommander genfromtxt. Cependant, la question demande un tableau d'enregistrements, par opposition à un tableau normal, l' dtype=None paramètre doit être ajouté à l' genfromtxt appel:

Compte tenu d'un fichier d'entrée, myfile.csv:

1.0, 2, 3
4, 5.5, 6

import numpy as np
np.genfromtxt('myfile.csv',delimiter=',')

donne un tableau:

array([[ 1. ,  2. ,  3. ],
       [ 4. ,  5.5,  6. ]])

et

np.genfromtxt('myfile.csv',delimiter=',',dtype=None)

donne un tableau d'enregistrements:

array([(1.0, 2.0, 3), (4.0, 5.5, 6)], 
      dtype=[('f0', '<f8'), ('f1', '<f8'), ('f2', '<i4')])

Cela a l'avantage de fichier avec plusieurs types de données, y compris des chaînes de caractères) peut être facilement importé.

67voto

btel Points 1738

Vous pouvez également essayer recfromcsv() qui peut deviner les types de données et renvoyer un tableau d'enregistrement correctement formaté.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X