问题描述
我有许多csv文件(超过90个)对于内存(每个压缩文件〜0.5gb)太大,它们都具有相同的架构。我想转换为镶木地板,然后使用dask进行时间序列分析。
目前,我将它们读入熊猫,执行一些类型检查和业务逻辑,然后使用nops_eval()
发送到镶木地板。我想按日期和版本号进行分区。因此,代码如下所示:
ddf.to_parquet
现在这可行,最后我得到一个文件夹结构,如下所示:
'some / path / _metadata'
'some / path / _common_metadata'
'some / path / DATE = 202001 / VERSION = 0 / part.0.parquet'
....依此类推。
现在,我想读入它,并执行基本的内存操作。阅读时得到奇怪的结果。
import pandas as pd
import dask.dataframe as ddf
import pyarrow.dataset as ds
d = pd.DataFrame({'DATE':[202001,202002,202003,202004,202005]*20,'VERSION':[0,1]*50,'OTHER':[1]*100})
d_dask = ddf.from_pandas(d,npartitions=2)
ddf.to_parquet(d_dask,'some/path/',engine = 'pyarrow',partition_on = ['DATE','VERSION'],\
write_metadata_file = True,schema='infer')
我得到以下信息:
test_read = ddf.read_parquet('some/path/',engine='pyarrow',partitioning="hive")
test_read.groupby('DATE').sum()
[IN]: test_read.groupby('DATE').sum().compute()
现在使用[OUT]:
DATE OTHER
202001 0
202002 0
202003 0
202004 0
202005 0
API可以正常工作。
pyarrow.datasets
我得到以下信息:
test_read = ds.dataset('some/path/',format='parquet',partitioning="hive")
test_read.to_table().to_pandas().groupby('DATE').sum()
那是我的期望。
有人知道这是怎么回事吗?
版本:
[OUT]:
OTHER VERSION
DATE
202001 20 10
202002 20 10
202003 20 10
202004 20 10
202005 20 10
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)