首页 > 解决方案 > Pandas 稀疏数据导出到 csv - 速度讲解

问题描述

我正在尝试将由类型列组成的 Pandas 数据框的子集导出pd.SparseDtype("float32", np.nan)到 csv。我注意到直接写入 csv 与使用sparse.to_dense()然后写入 csv 之间的速度存在一些差异。谁能向我解释这里发生了什么?

一个例子:

创建一些数据。

df = pd.DataFrame(columns = ['metric_' + str(x) for x in range(0,10000)], index = [x for x in range(0,10000)])
df = df.astype(pd.SparseDtype("float32", np.nan))

先不去密集

%%timeit
df2 = df.iloc[0:200,:]
df2.to_csv('small_csv2.csv')
1min 8s ± 4.91 s per loop (mean ± std. dev. of 7 runs, 1 loop each)

在写入 csv 之前变得密集

%%timeit
df3 = df.iloc[0:200,:].sparse.to_dense()
df3.to_csv('small_csv3.csv')
4.04 s ± 127 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

非常感谢

标签: pandasdataframecsvsparse-matrix

解决方案


推荐阅读