pandas - 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)
非常感谢
解决方案
推荐阅读
- java - 如何使用 swagger 为同一对象提供多个示例值
- angular - 类型“{}”上不存在属性“订阅”
- snowflake-cloud-data-platform - 雪花;SQL 编译错误:无效的对象类型:GET_DDL 上的“EXTERNAL_TABLE”(“DATABASE”,“MyDb”)
- java - 即使资源存在于可绘制文件夹中,资源未找到异常(无法找到资源 ID)
- keras - 推荐用于序列完成的深度学习模型
- c# - 如何将 var 转换为字符串?
- php - xampp 中 php.ini 的扩展在只有“sqlsrv.dll”的情况下不起作用
- python - 如何在我的 doctest 中只为完整的单词匹配返回 TRUE?
- android - 我真的需要学习 xml 来进行 android 开发吗?
- python - 计算 Python 元组中每个值的出现次数