[PYTHON] 어떻게하면 거대한 CSV 파일을 부분적으로 읽을 수 있습니까?
PYTHON어떻게하면 거대한 CSV 파일을 부분적으로 읽을 수 있습니까?
나는 매우 큰 CSV 파일을 가지고있어서 그것들을 모두 메모리에 읽어 들일 수는 없다. 나는 그저 몇 줄을 읽고 처리하기를 원한다. 그래서 나는이 작업을 처리 할 수있는 팬더에서 기본적인 파이썬이이 것을 잘 처리 할 수있는 함수를 찾고 있습니다.
with open('abc.csv') as f:
line = f.readline()
# pass until it reaches a particular line number....
그러나 팬더에서 이렇게하면 항상 첫 번째 줄을 읽습니다.
datainput1 = pd.read_csv('matrix.txt',sep=',', header = None, nrows = 1 )
datainput2 = pd.read_csv('matrix.txt',sep=',', header = None, nrows = 1 )
팬더에서이 작업을 처리하는 좀 더 쉬운 방법을 찾고 있습니다. 예를 들어, 1000에서 2000까지의 행을 읽으려는 경우 어떻게해야합니까?
데이터를 데이터 프레임으로 읽고 싶기 때문에 팬더를 사용하고 싶습니다.
해결법
-
==============================
1.chunksize 사용 :
chunksize 사용 :
for df in pd.read_csv('matrix.txt',sep=',', header = None, chunksize=1): #do something
두 번째 부분에 대답하려면 다음을 수행하십시오.
df = pd.read_csv('matrix.txt',sep=',', header = None, skiprows=1000, chunksize=1000)
이렇게하면 처음 1000 개 행을 건너 뛴 다음 1000-2000 행을 제공하는 다음 1000 개 행을 읽습니다. 끝점을 포함해야하는지 여부는 불분명하지만 원하는 것을 얻으려면 숫자를 바이올린으로 입력 할 수 있습니다.
-
==============================
2.EdChums 외에도 nrows 인수가 유용 할 때 대답하면 가져올 행의 수를 정의합니다. 따라서 iterator를 얻지는 않지만 오히려 크기의 전체 파일 중 일부만 가져올 수 있습니다. 그것은 역시 무효화와 함께 작동합니다.
EdChums 외에도 nrows 인수가 유용 할 때 대답하면 가져올 행의 수를 정의합니다. 따라서 iterator를 얻지는 않지만 오히려 크기의 전체 파일 중 일부만 가져올 수 있습니다. 그것은 역시 무효화와 함께 작동합니다.
df = pd.read_csv('matrix.txt',sep=',', header = None, skiprows= 1000, nrows=1000)
from https://stackoverflow.com/questions/29334463/how-can-i-partially-read-a-huge-csv-file by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] Flask-SQLAlchemy 테이블에 행이 있는지 확인 (0) | 2018.11.13 |
---|---|
[PYTHON] 가우스 혼합 모델 이해하기 (0) | 2018.11.13 |
[PYTHON] AES + CTR을 사용한 PyCrypto 문제 (0) | 2018.11.13 |
[PYTHON] PicklingError : <class 'decimal.Decimal'>을 pickle 할 수 없습니다 : decimal.Decimal과 같은 객체가 아닙니다. (0) | 2018.11.13 |
[PYTHON] 어떻게 아마존 웹 서비스에서 boto3에서 URL을 생성하는 (0) | 2018.11.13 |