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
'programing' 카테고리의 다른 글
C# Excel Interop:값을 텍스트로 저장하는 셀 형식 지정 방법 (0) | 2023.07.02 |
---|---|
maven 3.8.5가 있는 intelij Idea에서 Springboot 2.7 프로젝트를 가져오는 중 오류 발생했습니다. (0) | 2023.07.02 |
Ruby에서 추상 클래스를 구현하는 방법 (0) | 2023.06.27 |
SQL 예외: 문자열 또는 이진 데이터가 잘립니다. (0) | 2023.06.27 |
Python mysqldb: 라이브러리가 로드되지 않음: libmysqlclient.18.dylib (0) | 2023.06.27 |