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的主要内容,如果未能解决你的问题,请参考以下文章

python pandas使用经验

python之pandas简单介绍及使用

python 使用pandas #pandas导入csv

python之pandas简单介绍及使用

python pandas怎么用

如何优雅的安装Python的pandas