import dask.dataframe as dd
from dask import delayed
from fastparquet import ParquetFile
import glob
files = glob.glob('data/*.parquet')
@delayed
def load_chunk(path):
return ParquetFile(path).to_pandas()
df = dd.from_delayed([load_chunk(f) for f in files])
df.compute()
def read_parquet(file):
result = []
data = pd.read_parquet(file)
for index in data.index:
res = data.loc[index].values[0:-1]
result.append(res)
print(len(result))
file = "./data.parquet"
read_parquet(file)
8条答案
按热度按时间e4eetjau1#
pandas 0.21为 parquet 引入了新功能:
或
上面的链接解释:
这两个引擎非常相似,应该可以读写几乎相同的parquet格式文件。这两个库的不同之处在于底层依赖不同(fastparquet使用numba,而pyarrow使用c-库)。
zsbz8rwp2#
更新:自从我回答这个问题以来,已经有很多工作在这方面,看看Apache Arrow,以便更好地阅读和编写 parquet 。另外:http://wesmckinney.com/blog/python-parquet-multithreading/
有一个pythonParquet地板阅读器工作得相对较好:https://github.com/jcrobak/parquet-python
它将创建python对象,然后您必须将它们移动到Pandas DataFrame中,因此该过程将比
pd.read_csv
慢。vsnjm48y3#
除了panda,Apachepyarrow还提供了将parquet转换为 Dataframe 的方法
代码很简单,只需键入:
有关更多信息,请参见Apache pyarrow阅读and Writing Single Files中的文档
rkkpypqq4#
Parquet地板
第1步:要使用的数据
步骤2:保存为Parquet
第3步:从 parquet 读取
hsvhsicv5#
当写parquet的时候,考虑使用brotli压缩。我用brotli压缩得到了一个8 GB文件parquet文件的70%的压缩。Brotli使得一个比gzip,snappy,pickle更小的文件和更快的读/写。虽然pickle可以处理元组而parquet不能。
aemubtdh6#
parquet 文件总是很大。所以用dask读它。
u0sqgete7#
考虑名为
data.parquet
的.parquet
文件转换为 parquet
假设有一个 Dataframe
parquet_df
,希望保存到上面的parquet文件中,可以使用pandas.to_parquet
(此函数需要fastparquet或pyarrow库从 parquet 上读取
为了将parquet文件读入 Dataframe
new_parquet_df
,可以按如下方式使用pandas.read_parquet()
emeijp438#
你可以使用python来获取 parquet 数据
1.安装包
pin install pandas pyarrow
2.read file