Python/etc

Python parquet 타입으로 읽기, 쓰기

Owen.white 2022. 10. 6. 13:37
728x90
반응형

목차

    csv 데이터는 읽는 것 보다 쓰는 데 더욱 많은 시간이 걸린다.

    arrow에서는 csv 포맷 쓰기를 지원하지는 않기 때문에 parquet 타입 파일을 활용해야 한다.

     

    csv를 parquet 타입으로 저장

    import pyarrow.parquet as pq
    from pyarrow import csv
    
    pq.write_table(csv.read_csv('data.csv'), 'data.parquet')

    데이터 프레임을 parquet 파일로 저장

    데이터 프레임을 먼저 Table로 변환 후 parquet타입으로 저장한다.

    import pandas as pd
    df.to_parquet('data.parquet', engine = 'pyarrow', index = False)
    import pyarrow as pa
    import pyarrow.parquet as pq
    
    tabel_from_pandas = pa.Table.from_pandas(df,preserve_index = False)
    pq.write_table(table_from_pandas, 'data.parquet')

    ※ Pandas는 nanosecond를 지원하지만, Spark 같은 경우는 nanosecond를 지원하지 않기 때문에 관련 옵션이 있다.

    parquet 파일을 데이터 프레임으로 읽기

    읽는 속도가 빠르고 메타데이터로 설정한 데이터 타입이 유지되기 때문에 더 효과적이다.

    ※ read_pandas는 read_table 함수에 pandas의 index 컬럼 읽기가 추가된 함수이다.

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

     

    import pyarrow.parquet as pq
    df = pq.read_pandas('data.parquet').to_pandas()

     

    반응형