Python 3.x Python:将熊猫数据帧保存到拼花文件
是否可以将熊猫数据帧直接保存到拼花地板文件中? 如果没有,建议的流程是什么Python 3.x Python:将熊猫数据帧保存到拼花文件,python-3.x,hdfs,parquet,Python 3.x,Hdfs,Parquet,是否可以将熊猫数据帧直接保存到拼花地板文件中? 如果没有,建议的流程是什么 目的是能够将拼花地板文件发送给另一个团队,他们可以使用scala代码读取/打开该文件。谢谢 有一个名为fastparquet的包的相对较早的实现——它可能是您需要的一个很好的用例 或 或者,如果要使用某些文件选项,如行分组/压缩: write('outfile2.parq', df, row_group_offsets=[0, 10000, 20000], compression='GZIP', file_scheme
目的是能够将拼花地板文件发送给另一个团队,他们可以使用scala代码读取/打开该文件。谢谢 有一个名为fastparquet的包的相对较早的实现——它可能是您需要的一个很好的用例 或 或者,如果要使用某些文件选项,如行分组/压缩:
write('outfile2.parq', df, row_group_offsets=[0, 10000, 20000], compression='GZIP', file_scheme='hive')
支持存储数据帧:
import pyarrow
pyarrow.Table.from_pandas(dataset)
熊猫有一个核心功能
到_parquet()
。只需将数据帧写入拼花地板格式,如下所示:
df.to_parquet('myfile.parquet')
您仍然需要安装拼花库,如fastparquet
。如果安装了多个拼花库,还需要指定要使用的引擎,否则将使用要安装的第一个引擎(如中所示)。例如:
df.to_parquet('myfile.parquet', engine='fastparquet')
这是一种适用于我的方法-类似于上述方法-但也选择规定压缩类型:
import pandas as pd
设置测试数据帧
df = pd.DataFrame(data={'col1': [1, 2], 'col2': [3, 4]})
导入所需的拼花地板库(确保已安装,我使用:
$conda安装快速拼花地板
)
将数据框转换为拼花地板并保存到当前目录
df.to_parquet('df.parquet.gzip', compression='gzip')
将当前目录中的拼花地板文件读回数据框
pd.read_parquet('df.parquet.gzip')
输出:
col1 col2
0 1 3
1 2 4
是的,这是可能的。下面是示例代码:
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')
是,熊猫支持以拼花格式保存数据框。
将数据框写入拼花地板的简单方法。
假设,df
是数据帧。我们需要导入以下库
import pyarrow as pa
import pyarrow.parquet as pq
首先,将数据帧df
写入pyarrow
表中
# Convert DataFrame to Apache Arrow Table
table = pa.Table.from_pandas(df_image_0)
第二,将表格
写入parquet
文件,比如file\u name.parquet
import fastparquet
# Parquet with Brotli compression
pq.write_table(table, 'file_name.parquet')
注意:拼花文件可以在写入时进一步压缩。以下是流行的压缩格式。
- Snappy(默认值,不需要参数)
- gzip
- 布罗特利
pq.write_table(table, 'file_name.parquet')
pq.write_table(table, 'file_name.parquet', compression='GZIP')
pq.write_table(table, 'file_name.parquet', compression='BROTLI')
GZIP压缩实木地板
pq.write_table(table, 'file_name.parquet')
pq.write_table(table, 'file_name.parquet', compression='GZIP')
pq.write_table(table, 'file_name.parquet', compression='BROTLI')
Brotli压缩实木复合地板
pq.write_table(table, 'file_name.parquet')
pq.write_table(table, 'file_name.parquet', compression='GZIP')
pq.write_table(table, 'file_name.parquet', compression='BROTLI')
不同拼花地板形式的比较
参考:
另一个团队是否使用Spark或其他Scala工具?如果你有
pyspark
你可以做一些事情,比如当我们不使用它的任何东西时,为什么我们需要导入它?在DataRicks 7.1(python 3.7.5)中运行这个,我得到的“DataFrame”对象没有属性“toParquet”。嗯,这似乎是一个简单的问题:没有toParquet,不。它是为了“parquet”。干杯