"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Python 2.7에서 큰 CSV 파일을 효과적으로 처리하는 방법은 무엇입니까?

Python 2.7에서 큰 CSV 파일을 효과적으로 처리하는 방법은 무엇입니까?

2025-03-05에 게시되었습니다
검색:882

How to Effectively Handle Large CSV Files in Python 2.7?

Python에서 큰 .csv 파일을 읽는다

문제 :

Python 2.7에서 Massive .CSV 파일 (최대 1 백만 행, 200 열)을 읽는다. 그러나이 메소드는 과도한 메모리를 소비하기 때문에 큰 파일에 비현실적이됩니다.

솔루션 :

1. 생성 된 행은 다음과 같이 생성됩니다 :

전체 파일을 메모리에로드하지 마십시오. 대신 발전기 기능을 사용하여 생성 된 행정 행. csvfile로 Open (filename, "rb")을 사용하여 : DataReader = CSV.Reader (CSVFile) 다음으로 수율 (DataReader) # 헤더 행을 산출합니다 DataReader의 행 : row [3] == 기준 인 경우 : 수율 행

def getstuff(filename, criterion):
    with open(filename, "rb") as csvfile:
        datareader = csv.reader(csvfile)
        yield next(datareader)  # yield the header row
        for row in datareader:
            if row[3] == criterion:
                yield row
2. 필터링에 생성기 함수를 사용하십시오 :

필터 데이터는 생성기 함수를 사용하여 파일을 반복합니다. 이 접근법은 특정 기준을 충족하는 여러 연속 행을 일치시킬 수 있습니다. csvfile로 Open (filename, "rb")을 사용하여 : DataReader = CSV.Reader (CSVFile) 다음으로 수율 (DataReader) # 헤더 행을 산출합니다 Take While에서 수확량 ( lambda r : r [3] == 기준, Drophile (Lambda R : R [3]! = Criterion, DataReader))) 반환

def getstuff(filename, criterion):
    with open(filename, "rb") as csvfile:
        datareader = csv.reader(csvfile)
        yield next(datareader)  # yield the header row
        yield from takewhile(
            lambda r: r[3] == criterion,
            dropwhile(lambda r: r[3] != criterion, datareader))
        return

refactor getData () GetData ()도 생성기 기능을 사용하여 언제든지 메모리에서 한 행만 유지되도록합니다. 기준의 기준 : getStuff의 행 (filename, criterion)의 경우 : 수율 행 더 빠르고 효율적인 처리를위한 데이터베이스.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3