저는 파이썬을 처음 사용하고 아직 어떤 최적화 작업도하지 않았습니다. 나는 그들 자신이 이미 꽤 큰 파일을 가지고 가려고 시도하고있다. 아마 50-100GB에 가까워지는 하나의 커다란 파일을 결합하여 내 추측이 될 것이다. 어쨌든 내가 가지고있는 것보다 더 많은 메모리. 아래 코드가 주어졌고 작은 파일에도 잘 작동합니다. 내 유스 케이스의 실제 파일을 덮어 쓰려고하면 컴퓨터가 완전히 잠길 것입니다.일부 플랫 파일을 결합한이 코드를 더 빠르게 실행할 수 있습니까?
나는 팬더가 빠르다는 것을 알고 있습니다. 데이터 프레임이 메모리에 저장된다고 추측합니다. 그게 사실이라면 아마 여기에있는 것들을 망칠 것입니다. 디스크에 쓰기 전에 데이터 프레임에 모든 것을 보관하려고 시도하는 대신 디스크에 흘리거나 기존 파일에 쓸 수있는 종류 또는 메커니즘이 있습니까? 아니면 내가 생각하지 못했던 또 다른 옵션일까요?
import pandas as pd
import os
file_masks = ['fhv', 'green', 'yellow']
def combine_files(file_mask):
csvfiles = []
for path, directories, files in os.walk('TaxiDriveData/'):
csvfiles.extend([os.path.join(path, fn) for fn in files if fn.startswith(file_mask)])
df = pd.concat((pd.read_csv(fn) for fn in csvfiles))
df.to_csv(os.path.join('TaxiDriveCombinedData', file_mask + '_trip_data.csv'), index=False)
for m in file_masks:
combine_files(m)
분배 팬더와 :
는 다음과 같은 것을 시도 할 수 있습니다. 아마도 헤더를 건너 뛰어도 괜찮습니다. –