是否可以将pandas数据框直接保存到镶木地板文件中? 如果没有,建议的过程是什么?
目的是能够将镶木地板文件发送给另一个团队,他们可以使用scala代码来读取/打开它。谢谢!
答案 0 :(得分:8)
Pandas有核心功能to_parquet()
。只需将数据框写入镶木地板格式,如下所示:
df.to_parquet('myfile.parquet')
您仍然需要安装fastparquet
等镶木地板库。如果您安装了多个镶木地板库,则还需要指定要使用哪个引擎的pandas,否则将安装第一个(如documentation中所示)。例如:
df.to_parquet('myfile.parquet', engine='fastparquet')
答案 1 :(得分:7)
有一个名为fastparquet的软件包相对较早的实现 - 它可能是您需要的一个很好的用例。
https://github.com/dask/fastparquet
conda install -c conda-forge fastparquet
或
pip install fastparquet
from fastparquet import write
write('outfile.parq', df)
或者,如果你想使用一些文件选项,比如行分组/压缩:
write('outfile2.parq', df, row_group_offsets=[0, 10000, 20000], compression='GZIP', file_scheme='hive')
答案 2 :(得分:2)
pyarrow支持存储pandas数据帧:
import pyarrow
pyarrow.Table.from_pandas(dataset)
答案 3 :(得分:1)
这是对我有用的方法-与上述方法类似-但也选择规定压缩类型:
import pandas as pd
设置测试数据框
df = pd.DataFrame(data={'col1': [1, 2], 'col2': [3, 4]})
导入所需的实木复合地板库(确保已安装此木地板,我使用过:
$ conda install fastparquet
)
import fastparquet
将数据框转换为镶木地板并保存到当前目录
df.to_parquet('df.parquet.gzip', compression='gzip')
读取当前目录中的实木复合地板文件,重新放入熊猫数据框
pd.read_parquet('df.parquet.gzip')
输出:
col1 col2
0 1 3
1 2 4
答案 4 :(得分:1)
import pyarrow as pa
import pyarrow.parquet as pq
df = pd.DataFrame(data={'col1': [1, 2], 'col2': [3, 4]})
table = pa.Table.from_pandas(df, preserve_index=True)
pq.write_table(table, 'output.parquet')
答案 5 :(得分:0)
假设df
是熊猫数据框。我们需要导入以下库。
import pyarrow as pa
import pyarrow.parquet as pq
首先,将datafrmae df
写入pyarrow
表中。
# Convert DataFrame to Apache Arrow Table
table = pa.Table.from_pandas(df_image_0)
第二,将table
写到paraquet
文件中,说file_name.paraquet
# Parquet with Brotli compression
pq.write_table(table, 'file_name.paraquet')
具有活泼压缩的实木复合地板
pq.write_table(table, 'file_name.paraquet')
具有GZIP压缩功能的实木复合地板
pq.write_table(table, 'file_name.paraquet', compression='GZIP')
具有Brotli压缩功能的实木复合地板
pq.write_table(table, 'file_name.paraquet', compression='BROTLI')
参考: https://tech.jda.com/efficient-dataframe-storage-with-apache-parquet/