Python Pandas для конвертации CSV в паркет с помощью Fastparquet
Я использую интерпретатор Python 3.6 в моем PyCharm venv, и пытаюсь конвертировать CSV в Parquet.
import pandas as pd
df = pd.read_csv('/parquet/drivers.csv')
df.to_parquet('output.parquet')
Ошибка-1 ImportError: Невозможно найти работающий движок; пробовал использовать: "pyarrow", "fastparquet". пиарроу или фастпаркет необходимы для поддержки паркета
Раствор-1 Установлен фастпаркет 0.2.1
Файлошибки-2 "/ Users / python parquet / venv / lib / python3.6 / site-packages / fastparquet / compress.py", строка 131, в compress_data (алгоритм, отсортирован (сжатия))) RuntimeError: Сжатие 'snappy' недоступен. Опции: ['GZIP', 'UNCOMPRESSED']
Я установил python-snappy 0.5.3, но все еще получаю ту же ошибку? Нужно ли устанавливать какую-либо другую библиотеку?
Если я использую движок PyArrow 0.12.0, проблема не возникает.
2 ответа
В fastparquet мгновенное сжатие является дополнительной функцией.
Чтобы быстро проверить преобразование из csv в паркет, вы можете выполнить следующий скрипт (требуются только pandas и fastparquet):
import pandas as pd
from fastparquet import write, ParquetFile
df = pd.DataFrame({"col1": [1,2,3,4], "col2": ["a","b","c","d"]})
# df.head() # Test your initial value
df.to_csv("/tmp/test_csv", index=False)
df_csv = pd.read_csv("/tmp/test_csv")
df_csv.head() # Test your intermediate value
df_csv.to_parquet("/tmp/test_parquet", compression="GZIP")
df_parquet = ParquetFile("/tmp/test_parquet").to_pandas()
df_parquet.head() # Test your final value
Однако, если вам нужно писать или читать с использованием мгновенного сжатия, вы можете следовать этому ответу об установке библиотеки мгновенных файлов в ubuntu.
Я использовал следующие версии:python 3.10.9 fastparquet==2022.12.0 pandas==1.5.2
Этот код работает безотказно для меня
import pandas as pd
df = pd.read_csv('/parquet/drivers.csv')
df.to_parquet('output.parquet', engine="fastparquet")
Я бы рекомендовал вам отойти отpython 3.6
поскольку он достиг конца жизни и больше не поддерживается.