필자는 쓰기가 가능한 2Gb의 데이터 프레임을 가지고 많은 df를 읽습니다. 팬더에 df를 사용하고 싶습니다. 따라서 df.read_hdf
과 df.to_hdf
을 읽기 및 쓰기에 꽤 잘 작동하는 고정 형식으로 사용하고있었습니다.pandas.to_hdf를 사용하여 df에서 지정된 열을 빠르게 읽음
그러나 df는 더 많은 열을 추가하면서 커지기 때문에 대신 테이블 형식을 사용하여 데이터를 읽을 때 필요한 열을 선택할 수 있습니다. 나는 이것이 나에게 속도 이점을 줄 것이라고 생각했다. 그러나 테스트에서 이것은 그렇지 않은 것처럼 보인다.
이 예 :
import numpy as np
import pandas as pd
df = pd.DataFrame(np.random.randn(10000000,9),columns=list('ABCDEFGHI'))
%time df.to_hdf("temp.h5", "temp", format ="fixed", mode="w")
%time df.to_hdf("temp2.h5", "temp2", format="table", mode="w")
는 고정 된 형식이 약간 빠른 보여줍니다 (내 컴퓨터에 6.8s 대 5.9 초).
그런 다음 데이터를 읽기 (확인 파일을 만들기 위해 작은 휴식 후가 완전히 저장되어있는) :
%time x = pd.read_hdf("temp.h5", "temp")
%time y = pd.read_hdf("temp2.h5", "temp2")
%time z = pd.read_hdf("temp2.h5", "temp2", columns=list("ABC"))
수익률 :
Wall time: 420 ms (fixed)
Wall time: 557 ms (format)
Wall time: 671 ms (format, specified columns)
내가 고정 된 형식이 빠른에서 이해 할을 데이터를 읽지 만 지정된 열이있는 df가 전체 데이터 프레임을 읽는 것보다 속도가 느린 이유는 무엇입니까? 고정 서식보다 테이블 서식 (지정된 열의 유무에 관계없이)을 사용하면 어떤 이점이 있습니까?
df가 커지면 메모리 이점이 있습니까?
감사합니다. 전환 된 데이터를 저장하는 방법에 대해 자세히 설명해 주시겠습니까? 별도의 키를 사용하여 열을 저장해야하지만 동일한 hdf 파일에 저장해야한다는 의미입니까? 어쩌면 예를 들어 주시겠습니까? – user6538642
@ user6538642, 귀하의 "보통"대략입니까? DF 모양? – MaxU
shape = (6mln * 50), 열 수는 최대 수백까지 확장됩니다. 색인은 다중 색인 (datetime 형식의 날짜 및 이름) – user6538642