kzen.dev
  • Întrebări
  • Tag-uri
  • Utilizatori
Notificări
Recompense
Înregistrare
După înregistrare, veți primi notificări despre răspunsurile și comentariile la întrebările DVS.
Logare
Dacă aveţi deja un cont, autentificaţi-vă pentru a verifica notificările noi.
Aici vor fi recompensele pentru întrebările, răspunsurile și comentariile adăugate sau modificate.
Mai mult
Sursă
Editează
 hatmatrix
hatmatrix
Question

Cum am citit CSV de date într-o înregistrare matrice în NumPy?

Mă întreb dacă nu există o cale directă de a importa conținutul unui fișier CSV într-un record de matrice, de mult în modul în care R's citesc.tabelul(), citi.delim ()", și " citească.csv() familia importurile de date pentru a R's cadru de date?

Sau este cel mai bun mod de a utiliza csv.reader() și apoi se aplică ceva de genul numpy.core.înregistrări.fromrecords()?

376 2010-08-19T04:41:53+00:00 11
Peter Mortensen
Peter Mortensen
Întrebarea editată 15 iulie 2018 в 8:25
Programare
python
numpy
scipy
genfromtxt
Solution / Answer
 Andrew
Andrew
19 august 2010 в 6:34
2010-08-19T06:34:54+00:00
Mai mult
Sursă
Editează
#10907724

Puteți utiliza Numpy's genfromtxt () metoda pentru a face acest lucru, prin stabilireadelimitator` kwarg să o virgulă.

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

Mai multe informații despre funcția poate fi găsit la ei respectiv documentația.

numpy.genfromtxt — NumPy v1.23 Manual
docs.scipy.org
570
0
 atomh33ls
atomh33ls
10 octombrie 2014 в 9:30
2014-10-10T09:30:25+00:00
Mai mult
Sursă
Editează
#10907726

Mi-ar recomanda read_csv funcția de panda biblioteca:

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

Acest lucru oferă un panda DataFrame - permite mai multe date utile funcții de manipulare care nu sunt disponibile direct cu numpy record tablouri.

DataFrame este un 2-dimensional etichetate structură de date cu coloane de potențial diferite tipuri. Vă puteți gândi la ea ca o foaie de calcul sau tabel SQL...


Mi-ar recomanda, de asemenea, genfromtxt. Cu toate acestea, din moment ce întrebarea cere un înregistrare array, spre deosebire de un normal de matrice, dtype=None parametru trebuie să fie adăugate la genfromtxt apel:

Având un fișier de intrare, myfile.csv:

1.0, 2, 3
4, 5.5, 6

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

dă o matrice:

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

și

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

dă un record matrice:

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

Acest lucru are avantajul că fișierul cu mai multe tipuri de date (inclusiv siruri de caractere) poate fi cu ușurință importate.

162
0
 btel
btel
18 ianuarie 2011 в 12:44
2011-01-18T12:44:35+00:00
Mai mult
Sursă
Editează
#10907725

Puteți încerca, de asemenea, recfromcsv() care poate ghici tipuri de date și a reveni un format corect record matrice.

65
0
William komp
William komp
17 februarie 2015 в 3:52
2015-02-17T03:52:37+00:00
Mai mult
Sursă
Editează
#10907727

Am temporizat

from numpy import genfromtxt
genfromtxt(fname = dest_file, dtype = (<whatever options>))

versus

import csv
import numpy as np
with open(dest_file,'r') as dest_f:
    data_iter = csv.reader(dest_f,
                           delimiter = delimiter,
                           quotechar = '"')
    data = [data for data in data_iter]
data_array = np.asarray(data, dtype = <whatever options>)

pe de 4,6 milioane de rânduri, cu aproximativ 70 de coloane și a constatat că NumPy cale luat 2 min 16 sec și csv-lista de înțelegere metoda durat 13 secunde.

Mi-ar recomanda csv-lista înțelegerea metodei ca este cel mai probabil se bazează pe pre-compilate biblioteci și nu interpretul fel de mult ca NumPy. Bănuiesc panda metoda ar fi similare interpret deasupra capului.

Peter Mortensen
Peter Mortensen
Răspuns editat 15 iulie 2018 в 8:26
64
0
 HVNSweeting
HVNSweeting
13 octombrie 2017 в 10:28
2017-10-13T10:28:24+00:00
Mai mult
Sursă
Editează
#10907730

Ca am incercat ambele moduri, folosind NumPy și Panda, folosind panda are o multime de avantaje:

  • Mai repede
  • Mai puțin CPU utilizare
  • 1/3 utilizare RAM comparativ cu NumPy genfromtxt

Acesta este testul meu de cod:

$ for f in test_pandas.py test_numpy_csv.py ; do  /usr/bin/time python $f; done
2.94user 0.41system 0:03.05elapsed 109%CPU (0avgtext+0avgdata 502068maxresident)k
0inputs+24outputs (0major+107147minor)pagefaults 0swaps

23.29user 0.72system 0:23.72elapsed 101%CPU (0avgtext+0avgdata 1680888maxresident)k
0inputs+0outputs (0major+416145minor)pagefaults 0swaps

test_numpy_csv.py

from numpy import genfromtxt
train = genfromtxt('/home/hvn/me/notebook/train.csv', delimiter=',')

test_pandas.py

from pandas import read_csv
df = read_csv('/home/hvn/me/notebook/train.csv')

Fișier de date:

du -h ~/me/notebook/train.csv
 59M    /home/hvn/me/notebook/train.csv

Cu NumPy și panda la versiuni:

$ pip freeze | egrep -i 'pandas|numpy'
numpy==1.13.3
pandas==0.20.2
Peter Mortensen
Peter Mortensen
Răspuns editat 15 iulie 2018 в 8:29
12
0
 chamzz.dot
chamzz.dot
21 iunie 2017 в 7:52
2017-06-21T07:52:48+00:00
Mai mult
Sursă
Editează
#10907728

Puteți utiliza acest cod pentru a trimite un fișier CSV de date într-o matrice:

import numpy as np
csv = np.genfromtxt('test.csv', delimiter=",")
print(csv)
Peter Mortensen
Peter Mortensen
Răspuns editat 15 iulie 2018 в 8:27
5
0
 muTheTechie
muTheTechie
3 august 2017 в 8:02
2017-08-03T08:02:35+00:00
Mai mult
Sursă
Editează
#10907729

Am incercat asa:

import pandas as p
import numpy as n

closingValue = p.read_csv("<FILENAME>", usecols=[4], dtype=float)
print(closingValue)
3
0
Xiaojian Chen
Xiaojian Chen
30 ianuarie 2018 в 11:34
2018-01-30T11:34:40+00:00
Mai mult
Sursă
Editează
#10907731

Folosind numpy.loadtxt

O destul de simplă metodă. Dar este nevoie de toate elementele fiind float (int și așa mai departe)

import numpy as np 
data = np.loadtxt('c:\\1.csv',delimiter=',',skiprows=0)  
Guillaume Jacquenot
Guillaume Jacquenot
Răspuns editat 24 mai 2018 в 4:42
3
0
Matthew Park
Matthew Park
13 iunie 2018 в 9:00
2018-06-13T21:00:25+00:00
Mai mult
Sursă
Editează
#10907732

Acesta este cel mai simplu mod:

import csv cu deschis(&#39;testfile.csv&#39;, newline=&#39;&#39;) ca csvfile: date = lista(csv.cititor(csvfile))

Acum fiecare intrare în date este un record, reprezentat ca o matrice. Deci, aveți o matrice 2D. M-a salvat atât de mult timp.

3
0
Jatin Mandav
Jatin Mandav
22 iunie 2018 в 9:39
2018-06-22T09:39:10+00:00
Mai mult
Sursă
Editează
#10907733

Aș sugera folosind tabele (pip3 instala mese). Puteți salva .csv fișier .h5 folosind panda (pip3 instalați panda),

import pandas as pd
data = pd.read_csv("dataset.csv")
store = pd.HDFStore('dataset.h5')
store['mydata'] = data
store.close()

Apoi, puteți cu ușurință, și cu mai puțin timp, chiar și pentru o cantitate mare de date, încărcați datele dumneavoastră într-un NumPy matrice.

import pandas as pd
store = pd.HDFStore('dataset.h5')
data = store['mydata']
store.close()

# Data in NumPy format
data = data.values
Peter Mortensen
Peter Mortensen
Răspuns editat 15 iulie 2018 в 8:30
1
0
Nihal Sargaiya
Nihal Sargaiya
25 august 2019 в 5:18
2019-08-25T17:18:34+00:00
Mai mult
Sursă
Editează
#10907734

Acest lucru ca un farmec... `` import csv cu deschis("de date.csv", 'r') ca f: date = lista(csv.cititor(f, delimitator=";"))

import numpy ca np date = np.array(date, dtype=np.float) ``

Butiri Dan
Butiri Dan
Răspuns editat 25 august 2019 в 6:04
0
0
Comunități asemănătoare 1
Python România
Python România
125 utilizatori
Comunitatea pasionaților de Python din România.
Deschide telegram
Adăugati o întrebare
Categorii
Toate
Tehnologii
Cultură
Viață / Artă
Stiință
Profesii
Afaceri
Utilizatori
Toate
Nou
Populare
1
工藤 芳則
Înregistrat 6 zile în urmă
2
Ирина Беляева
Înregistrat 1 săptămână în urmă
3
Darya Arsenyeva
Înregistrat 1 săptămână în urmă
4
anyta nuam-nuam (LapuSiK)
Înregistrat 1 săptămână în urmă
5
Shuhratjon Imomkulov
Înregistrat 1 săptămână în urmă
DE
EL
ES
FR
ID
IT
JA
KO
NL
NO
PT
RO
RU
TR
ZH
© kzen.dev 2023
Sursă
stackoverflow.com
în cadrul licenței cc by-sa 3.0 cu atribuire