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 ()?
Réponses
Trop de publicités? 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.
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é.