2016-11-07 1 views
5

pandas 데이터 프레임을 입력으로 예상하는 계산이 있습니다. 나는이 계산을 51GB로 확장 된 netCDF 파일에 저장하려고합니다. 현재는 xarray.open_dataset으로 파일을 열고 청크를 사용하고 있습니다. (이 이해는이 열린 파일이 실제로는 dase 배열이므로로드하는 것입니다. 한 번에 메모리에 데이터 덩어리). 그러나 계산을 실행하기 위해 xarray 데이터를 판다 데이터 프레임으로 변환해야하므로이 게으른로드를 활용할 수있는 것 같지 않습니다. 그리고 그 시점에서 모든 데이터가로드됩니다. 메모리에 저장 (나쁜).xarray 데이터 세트를 dask 데이터 프레임 내의 pandas 데이터 프레임으로 변환하는 방법

내 생각에 짧은 질문을 간략히 생각해보십시오. 내 전체 데이터를 메모리에로드하는 중간 단계없이 xarray 데이터 세트에서 팬더 데이터 프레임을 얻으려면 어떻게해야합니까? 내가 pandas.read_csv와 dask 작업을 봤어요, 그리고 그것을 xarray와 함께 작동 볼 수 있지만 난 이미 청크에서 판다 데이터 프레임에 이미 열린 netCDF xarray 데이터 세트를 변환 모르겠어요.

애매한 질문에 감사드립니다.

답변

3

좋은 질문입니다. 이 이되어야합니다. 그러나 올바른 접근 방식이 무엇인지 잘 모르겠습니다.

이상적으로는 간단히 xarray.Dataset.to_dask_dataframe() 메소드를 구현할 수 있습니다. 하지만 여기에는 몇 가지 도전 과제가 있습니다. 가장 큰 것은 dask가 현재 dataframes with a MultiIndex을 지원하지 않는다는 것입니다.

또는 xarray.Dataset의 각 청크에 대해 pandas.DataFrames을 보유하는 dask.Delayed 개체 목록을 구성 할 수 있습니다. 이를 위해 xarray에 Datacet을 지연된 데이터 집합으로 변환하기위한 dask.array의 to_delayed method과 같은 것이 있으면 좋을 것입니다. 지연 배열을 사용하면 지연적으로 DataFrame 객체로 변환하고 계산할 수 있습니다.

논의 할 dask 또는 xarray GitHub 페이지에서 문제를 열 ​​것을 권장합니다 (특히 코드 기여에 관심이있는 경우). 편집 : 해당 문제가 here 찾을 수 있습니다.

관련 문제