Python Pandas 使用 Fastparquet 将 CSV 转换为 Parquet
Posted
技术标签:
【中文标题】Python Pandas 使用 Fastparquet 将 CSV 转换为 Parquet【英文标题】:Python Pandas to convert CSV to Parquet using Fastparquet 【发布时间】:2019-07-05 15:04:22 【问题描述】:我在 PyCharm venv 中使用 Python 3.6 解释器,并尝试将 CSV 转换为 Parquet。
import pandas as pd
df = pd.read_csv('/parquet/drivers.csv')
df.to_parquet('output.parquet')
错误 1 ImportError:无法找到可用的引擎;尝试使用:'pyarrow'、'fastparquet'。 parquet 支持需要 pyarrow 或 fastparquet
解决方案-1 安装了 fastparquet 0.2.1
错误 2 文件“/Users/python parquet/venv/lib/python3.6/site-packages/fastparquet/compression.py”,第 131 行,在 compress_data (算法,排序(压缩))) RuntimeError: 压缩 'snappy' 不可用。选项:['GZIP', '未压缩']
我安装了 python-snappy 0.5.3 但仍然出现同样的错误?我需要安装任何其他库吗?
如果我使用 PyArrow 0.12.0 引擎,我不会遇到此问题。
【问题讨论】:
【参考方案1】:在 fastparquet 中,快速压缩是一个可选功能。
要快速检查从 csv 到 parquet 的转换,您可以执行以下脚本(仅需要 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
但是,如果您需要使用 snappy 压缩进行写入或读取,您可以关注此answer about installing snappy library on ubuntu。
【讨论】:
以上是关于Python Pandas 使用 Fastparquet 将 CSV 转换为 Parquet的主要内容,如果未能解决你的问题,请参考以下文章