programing

CSV 데이터를 NumPy의 레코드 어레이로 읽으려면 어떻게 해야 합니까?

nicescript 2022. 9. 28. 21:51
반응형

CSV 데이터를 NumPy의 레코드 어레이로 읽으려면 어떻게 해야 합니까?

Import와 같이 ?read.table(),read.delim() , , , , 입니다.read.csv()【R】【R】【Import】【Import】【R】【R】【Import】?

아니면 를 사용하여 신청해야 하나요?numpy.core.records.fromrecords()

를 설정하여 사용하다delimiter다음 중 하나:

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

사용방법:

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

이를 통해 판다는 수치 레코드 배열에서는 직접 사용할 수 없는 많은 유용한 데이터 조작 기능을 제공합니다.

DataFrame는 잠재적으로 다른 유형의 열을 가진 2차원 레이블이 지정된 데이터 구조입니다.스프레드시트나 SQL 테이블처럼 생각할 수 있습니다.


저도 추천합니다.단, 이 질문에서는 일반 배열이 아닌 레코드 배열이 요구되므로dtype=None는 이 에 추가할 필요가 있습니다.genfromtxt 삭제:

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

하하 the 'myfile.csv':

1.0, 2, 3
4, 5.5, 6

위의 코드는 배열을 나타냅니다.

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

그리고.

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

는 레코드 배열을 나타냅니다.

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

따라서 여러 데이터 유형(문자열 포함)을 가진 파일을 쉽게 가져올 수 있습니다.

해봤어요.

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

vs:

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>)

460만 행에 약 70개의 컬럼이 있는 경우 NumPy 경로에는 2분 16초, csv 목록 이해 방법에는 13초가 소요되었습니다.

csv-list 이해 방식은 NumPy만큼 인터프리터가 아니라 사전 컴파일된 라이브러리에 의존할 가능성이 높기 때문에 추천합니다.나는 판다 방법이 비슷한 오버헤드를 가지고 있을 것이라고 의심한다.

데이터 유형을 추측하여 올바른 형식의 레코드 배열을 반환할 수도 있습니다.

NumPy와 Panda를 모두 사용해 보았기 때문에 Panda를 사용하는 것은 많은 장점이 있습니다.

  • 빠른
  • CPU 사용률 감소
  • 메모리 사용량 1/3과 NumPy gen의 비교

테스트 코드입니다.

$ 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_module을 클릭합니다.화이

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

데이터 파일:

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

NumPy 및 판다 버전 포함:

$ pip freeze | egrep -i 'pandas|numpy'
numpy==1.13.3
pandas==0.20.2

사용법

꽤 간단한 방법이죠.단, 모든 요소를 플로팅해야 합니다(int 등).

import numpy as np 
data = np.loadtxt('c:\\1.csv',delimiter=',',skiprows=0)  

다음 코드를 사용하여 CSV 파일 데이터를 어레이로 전송할 수 있습니다.

import numpy as np
csv = np.genfromtxt('test.csv', delimiter=",")
print(csv)

하는 것이 .pip3 install tables)을할 수 .csv.h5pip3 install pandas

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

그러면 대량의 데이터라도 쉽고 짧은 시간 내에 NumPy 어레이에 데이터를 로드할 수 있습니다.

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

# Data in NumPy format
data = data.values

이 작품은 매력적으로...

import csv
with open("data.csv", 'r') as f:
    data = list(csv.reader(f, delimiter=";"))

import numpy as np
data = np.array(data, dtype=np.float)

가장 쉬운 방법은 다음과 같습니다.

import csv
with open('testfile.csv', newline='') as csvfile:
    data = list(csv.reader(csvfile))

데이터의 각 엔트리는 하나의 배열로 표현되는 레코드입니다.2D 어레이가 있습니다.덕분에 시간이 많이 절약됐어요.

최신판 팬더와 Numpy 버전으로 구매 가능합니다.

import pandas as pd
import numpy as np

data = pd.read_csv('data.csv', header=None)

# Discover, visualize, and preprocess data using pandas if needed.

data = data.to_numpy()

이거 해봤어요.

import pandas as p
import numpy as n

closingValue = p.read_csv("<FILENAME>", usecols=[4], dtype=float)
print(closingValue)
In [329]: %time my_data = genfromtxt('one.csv', delimiter=',')
CPU times: user 19.8 s, sys: 4.58 s, total: 24.4 s
Wall time: 24.4 s

In [330]: %time df = pd.read_csv("one.csv", skiprows=20)
CPU times: user 1.06 s, sys: 312 ms, total: 1.38 s
Wall time: 1.38 s

이것은 매우 간단한 작업이며, 이것을 하는 가장 좋은 방법은 다음과 같습니다.

import pandas as pd
import numpy as np


df = pd.read_csv(r'C:\Users\Ron\Desktop\Clients.csv')   #read the file (put 'r' before the path string to address any special characters in the file such as \). Don't forget to put the file name at the end of the path + ".csv"

print(df)`

y = np.array(df)

언급URL : https://stackoverflow.com/questions/3518778/how-do-i-read-csv-data-into-a-record-array-in-numpy

반응형