programing

Pandas DataFrame에서 Parquet 파일을 읽는 방법은 무엇입니까?

topblog 2023. 6. 27. 21:37
반응형

Pandas DataFrame에서 Parquet 파일을 읽는 방법은 무엇입니까?

Hadoop 또는 Spark와 같은 클러스터 컴퓨팅 인프라를 설정하지 않고 적당한 크기의 Parquet 데이터 세트를 메모리 내 Pandas DataFrame으로 읽는 방법은 무엇입니까?이것은 노트북에서 간단한 파이썬 스크립트로 메모리 내에서 읽고 싶은 적당한 양의 데이터입니다.데이터가 HDFS에 없습니다.로컬 파일 시스템에 있거나 S3에 있을 수 있습니다.Hadoop, Hive 또는 Spark와 같은 다른 서비스를 운영하고 구성하고 싶지 않습니다.

저는 Blaze/Odo가 이것을 가능하게 했을 것이라고 생각했습니다. Odo 문서에는 Parquet이 언급되어 있지만, 예제는 모두 외부 Hive 런타임을 거치는 것으로 보입니다.

Panda 0.21은 Parquet에 새로운 기능을 도입했습니다.

import pandas as pd
pd.read_parquet('example_pa.parquet', engine='pyarrow')

또는

import pandas as pd
pd.read_parquet('example_fp.parquet', engine='fastparquet')

위의 링크는 다음과 같습니다.

이러한 엔진은 매우 유사하며 거의 동일한 파켓 형식 파일을 읽고 써야 합니다.이러한 라이브러리는 서로 다른 기본 종속성(numba를 사용하여 빠른 파켓을 사용하는 반면 pyarrow는 c-라이브러리를 사용함)을 가지고 있습니다.

업데이트: 제가 이 질문에 대답한 이후로 아파치 애로우에 대한 더 나은 읽기와 쓰기를 위한 많은 작업이 있었습니다.또한: http://wesmckinney.com/blog/python-parquet-multithreading/

비교적 잘 작동하는 파이썬 파켓 리더가 있습니다: https://github.com/jcrobak/parquet-python

Python 객체를 생성한 다음 Pandas DataFrame으로 이동해야 프로세스가 다음보다 느립니다.pd.read_csv예를들면.

Panda 외에도 Apache pyarrow는 Parquet을 데이터 프레임으로 변환하는 방법도 제공합니다.

코드는 단순하며 다음과 같이 입력하면 됩니다.

import pyarrow.parquet as pq

df = pq.read_table(source=your_file_path).to_pandas()

자세한 내용은 Apache pyarrow 단일 파일 읽기쓰기 문서를 참조하십시오.

파르케

1단계: 사용할 데이터

df = pd.DataFrame({
    'student': ['personA007', 'personB', 'x', 'personD', 'personE'],
    'marks': [20,10,22,21,22],
})

2단계: 파켓으로 저장

df.to_parquet('sample.parquet')

3단계: Parquet에서 읽기

df = pd.read_parquet('sample.parquet')

파켓에 글을 쓸 때는 브로틀리 압축을 사용하는 것을 고려하십시오.브로틀리 압축을 사용하여 8GB 파일 parquet 파일의 70% 크기를 줄이고 있습니다.Brotli는 gzip, snapphy, pickle보다 파일 크기가 작고 읽기/쓰기 속도가 빠릅니다.피클은 튜플을 할 수 있지만, 파켓은 그렇지 않습니다.

df.to_parquet('df.parquet.brotli',compression='brotli')
df = pd.read_parquet('df.parquet.brotli')

Parquet 파일은 항상 큽니다.그러니 대스크로 읽어보세요.

import dask.dataframe as dd
from dask import delayed
from fastparquet import ParquetFile
import glob

files = glob.glob('data/*.parquet')

@delayed
def load_chunk(path):
    return ParquetFile(path).to_pandas()

df = dd.from_delayed([load_chunk(f) for f in files])

df.compute()

고할때려를 .parquet 이름이 파이지정입니다.data.parquet

parquet_file = '../data.parquet'

open( parquet_file, 'w+' )

파켓으로 변환

것이 을 가지고 있다고 가정합니다.parquet_df위의 parquet 파일에 저장하고 싶은 경우 다음과 같이 사용할 수 있습니다(이 함수는 fast parquet 또는 pyarrow 라이브러리가 필요함).

parquet_df.to_parquet(parquet_file)

파르케에서 읽기

프레임에 파일을 는 Parquet 파일을 읽어 들여야 합니다.new_parquet_df다음과 같이 사용할 수 있습니다.

new_parquet_df = pd.read_parquet(parquet_file)

파이썬을 사용하여 파켓 데이터를 가져올 수 있습니다.

1 1을 합니다.패키지 설치pin install pandas pyarrow

2.파일 읽기

def read_parquet(file):
    result = []
    data = pd.read_parquet(file)
    for index in data.index:
        res = data.loc[index].values[0:-1]
        result.append(res)
    print(len(result))


file = "./data.parquet"
read_parquet(file)

언급URL : https://stackoverflow.com/questions/33813815/how-to-read-a-parquet-file-into-pandas-dataframe

반응형