是否可以将Pandas的数据框直接保存到 parquet 文件中?如果不能,建议的过程是什么?我们的目标是能够将 parquet 文件发送给另一个团队,他们可以使用scala代码来读取/打开它。谢谢!
uklbhaso1#
Pandas有一个核心函数to_parquet()。只需将 Dataframe 写入parquet格式,如下所示:
to_parquet()
df.to_parquet('myfile.parquet')
您仍然需要安装一个parquet库,例如fastparquet。如果您安装了多个parquet库,您还需要指定您希望panda使用哪个引擎,否则它将使用第一个安装的引擎(如documentation)。例如:
fastparquet
df.to_parquet('myfile.parquet', engine='fastparquet')
2uluyalo2#
假设df是Pandas Dataframe ,我们需要导入以下库。
df
import pyarrow as pa import pyarrow.parquet as pq
首先,将 Dataframe df写入pyarrow表。
pyarrow
# Convert DataFrame to Apache Arrow Table table = pa.Table.from_pandas(df_image_0)
其次,将table写入parquet文件,即file_name.parquet
table
parquet
file_name.parquet
# Parquet with Brotli compression pq.write_table(table, 'file_name.parquet')
parquet ,采用弹性压缩
pq.write_table(table, 'file_name.parquet')
采用GZIP压缩的 parquet
pq.write_table(table, 'file_name.parquet', compression='GZIP')
具有Brotli压缩的 parquet
pq.write_table(table, 'file_name.parquet', compression='BROTLI')
参考:https://tech.blueyonder.com/efficient-dataframe-storage-with-apache-parquet/
fnatzsnv3#
有一个名为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')
7kqas0il4#
是的,这是可能的。下面是示例代码:
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')
wqnecbli5#
pyarrow支持存储panda Dataframe :
import pyarrow pyarrow.Table.from_pandas(dataset)
4ktjp1zp6#
这是对我起作用的方法-类似于上面的方法-但是也选择规定压缩类型:设置测试 Dataframe
df = pd.DataFrame(data={'col1': [1, 2], 'col2': [3, 4]})
将数据框转换为 parquet 格式并保存到当前目录
df.to_parquet('df.parquet.gzip', compression='gzip')
读取当前目录中的parquet文件,返回到Pandas数据框中
pd.read_parquet('df.parquet.gzip')
输出:
col1 col2 0 1 3 1 2 4
ie3xauqp7#
**Pandas直接支撑 parquet **
df.to_parquet('df.parquet.gzip', compression='gzip') # this will convert the df to parquet format df_parquet = pd.read_parquet('df.parquet.gzip') # This will read the parquet file df.to_csv('filename.csv') # this will convert back the parquet to CSV
lxkprmvk8#
是的,很有可能将pandas dataframe写入binary parquet。需要一些额外的库,如pyarrow和fastparquet。
pandas dataframe
binary parquet
import pyarrow import pandas as pd #read parquet file into pandas dataframe df=pd.read_parquet('file_location/file_path.parquet',engine='pyarrow') #writing dataframe back to source file df.to_parquet('file_location/file_path.parquet', engine='pyarrow')
8条答案
按热度按时间uklbhaso1#
Pandas有一个核心函数
to_parquet()
。只需将 Dataframe 写入parquet格式,如下所示:您仍然需要安装一个parquet库,例如
fastparquet
。如果您安装了多个parquet库,您还需要指定您希望panda使用哪个引擎,否则它将使用第一个安装的引擎(如documentation)。例如:2uluyalo2#
Yes panda支持以 parquet 格式保存 Dataframe 。
将Pandas Dataframe 写入 parquet 的简单方法。
假设
df
是Pandas Dataframe ,我们需要导入以下库。首先,将 Dataframe
df
写入pyarrow
表。其次,将
table
写入parquet
文件,即file_name.parquet
注意:Parquet文件可以在写入时进一步压缩。以下是常用的压缩格式。
parquet ,采用弹性压缩
采用GZIP压缩的 parquet
具有Brotli压缩的 parquet
使用不同规格的 parquet 进行对比
参考:https://tech.blueyonder.com/efficient-dataframe-storage-with-apache-parquet/
fnatzsnv3#
有一个名为fastparquet的包的实现相对较早-它可能是您所需要的一个很好的用例。
https://github.com/dask/fastparquet
或
或者,如果要使用某些文件选项(如行分组/压缩):
7kqas0il4#
是的,这是可能的。下面是示例代码:
wqnecbli5#
pyarrow支持存储panda Dataframe :
4ktjp1zp6#
这是对我起作用的方法-类似于上面的方法-但是也选择规定压缩类型:
设置测试 Dataframe
将数据框转换为 parquet 格式并保存到当前目录
读取当前目录中的parquet文件,返回到Pandas数据框中
输出:
ie3xauqp7#
**Pandas直接支撑 parquet **
lxkprmvk8#
是的,很有可能将
pandas dataframe
写入binary parquet
。需要一些额外的库,如pyarrow
和fastparquet
。