Python Pandas使用Fastparquet将CSV转换为Parquet

时间:2019-02-12 02:42:56

标签: python-3.x pandas fastparquet

我在PyCharm venv中使用Python 3.6解释器,并尝试将CS​​V转换为Parquet。

import pandas as pd    
df = pd.read_csv('/parquet/drivers.csv')
df.to_parquet('output.parquet')

错误1     ImportError:无法找到可用的引擎;尝试使用:“ pyarrow”,“ fastparquet”。     需要镶木地板或快速镶木地板才能获得镶木地板

解决方案1 ​​ 已安装fastparquet 0.2.1

错误2   在compress_data中,文件“ / Users / python parquet / venv / lib / python3.6 / site-packages / fastparquet / compression.py”,第131行     (算法,排序(压缩))) RuntimeError:压缩“快照”不可用。选项:['GZIP','UNCOMPRESSED']

我安装了 python-snappy 0.5.3 ,但仍然收到相同的错误?我需要安装其他任何库吗?

如果我使用 PyArrow 0.12.0 引擎,则不会遇到此问题。

1 个答案:

答案 0 :(得分:1)

在快速镶木地板中,快速压缩是一项可选功能。

要快速检查从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

但是,如果您需要使用快速压缩进行写入或读取,则可以遵循此answer about installing snappy library on ubuntu