이 과정의 속도를 향상시킬 방법을 찾고 있습니다. 나는 그것을 작동 시키지만 완료하는 데는 며칠이 걸릴 것입니다.
나는 1 년 동안 매일 데이터 파일을 가지고 있습니다. 그리고 각 데이터 레이블 (데이터 태그)에 대한 노드가있는 단일 HDF5 파일로 결합하려고합니다.
데이터는 다음과 같습니다 : 다른 항목 번호, 각 데이터 태그에 대한 다른 업데이트 주파수가 있다는 것을팬더에서 CSV를 HDF5로 변환하는 속도를 높이십시오.
a,1468004920,986.078
a,1468004921,986.078
a,1468004922,987.078
a,1468004923,986.178
a,1468004924,984.078
b,1468004920,986.078
b,1468004924,986.078
b,1468004928,987.078
c,1468004924,98.608
c,1468004928,97.078
c,1468004932,98.078
참고. 각각의 실제 데이터 파일에는 약 4 백만 개의 행과 약 4000 개의 태그 레이블이 각 단일 날짜 파일에 포함되어 있으며 1 년의 데이터가 있습니다.
다음 코드는 내가 원하는 것을 수행합니다. 그러나 모든 파일에 대해 실행하면 완료하는 데 며칠이 걸릴 것입니다.
import pandas as pd
import datetime
import pytz
MI = pytz.timezone('US/Central')
def readFile(file_name):
tmp_data=pd.read_csv(file_name,index_col=[1],names=['Tag','Timestamp','Value'])
tmp_data.index=pd.to_datetime(tmp_data.index,unit='s')
tmp_data.index.tz=MI
tmp_data['Tag']=tmp_data['Tag'].astype('category')
tag_names=tmp_data.Tag.unique()
for idx,name in enumerate(tag_names):
tmp_data.loc[tmp_data.Tag==name].Value.to_hdf('test.h5',name,complevel=9, complib='blosc',format='table',append=True)
for name in ['test1.csv']:
readFile(name)
, 난 할 노력하고있어하면 CSV 데이터를 "풀다"하는 것입니다, 각각의 태그는 HDF5 파일에서 분리 :이 속도를 제안 찾고 있어요. 그래서 나는 1 년 동안 hdf5 파일의 단일 리프에 "a"라는 태그가 붙은 모든 데이터를 가져오고 다음 리프 등으로 모든 "b"데이터를 가져 오려고합니다. 그래서 위의 코드를 각각 실행해야합니다. 365 개 파일. 압축을 시도하거나 압축하지 않고 시도했지만 index = False도 시도했습니다. 그러나 둘 다 커다란 영향을 미치지는 않았다.
내가 무엇을 제안하는 것은 인덱스 = 거짓을 사용하는 것입니다 생각합니다. 나는 많은 변화없이 노력했다. 그러나 코드는 루프에서 중요한 부분을 제거합니다. tmp_data는 내 CSV 데이터이며 각 파일에 대해 실제 코드에서 "test.txt"는 실제로 파일 이름을 저장하는 변수입니다. 그래서 저는 각 태그를 다른 노드에 집어 넣습니다. 코드는 전체 파일을 단일 노드에 저장합니다. – Adam
명확히하기 위해, 방금 함수를 사용하기 위해 코드를 편집했습니다. 문제는 readFile을 더 빠르게 만드는 방법입니다. – Adam