停止使用 CSV 进行存储,这种文件格式快 150 倍

Posted Python学习与数据挖掘

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了停止使用 CSV 进行存储,这种文件格式快 150 倍相关的知识,希望对你有一定的参考价值。

欢迎关注 ,专注Python、数据分析、数据挖掘、好玩工具!

CSV 不是唯一的数据存储格式。事实上,这可能是你应该考虑的最后一个。如果你不打算手动编辑保存的数据,那么坚持下去就是在浪费时间和金钱。

如果你没有对文件格式进行太多研究,收集大量数据并将它们存储在云中并选择了 CSV 进行保存,我相信你的开支将会很大!我们只需一个简单的调整可以将它们减少一半,甚至更多,这个调整是选择不同的文件格式。

今天,我将分享 Feather 数据格式的来龙去脉,它是一种用于存储数据帧的快速轻量级的二进制格式。

Feather 究竟是什么?

简而言之,它是一种用于存储数据帧的数据格式,它围绕一个简单的前提而设计:尽可能高效地将数据帧推入和推出内存,它最初是为 Python 和 R 之间的快速通信而设计的,但你不仅限于此用例。

你需要安装 feather-format 才能继续 Feather。

# Pip
pip install feather-format

# Anaconda
conda install -c conda-forge feather-format

如何在Python中使用Feather?

让我们从导入库并创建一个相对较大的数据集开始。

import feather
import numpy as np
import pandas as pd

np.random.seed = 42
df_size = 10_000_000

df = pd.DataFrame({
    'a': np.random.rand(df_size),
    'b': np.random.rand(df_size),
    'c': np.random.rand(df_size),
    'd': np.random.rand(df_size),
    'e': np.random.rand(df_size)
})
df.head()

接下来我们将其保存在本地。 你可以使用以下命令将 DataFrame 保存为 Pandas 的 Feather 格式:

df.to_feather('1M.feather')

以下是对 Feather 库执行相同操作的方法:

feather.write_dataframe(df, '1M.feather')

没有太大区别。这两个文件现在都保存在本地。你可以使用 Pandas 或专用库阅读它们。

首先是 Pandas 的语法:

df = pd.read_feather('1M.feather')

如果你使用 Feather 库,请将其更改为以下内容:

df =feather.read_dataframe('1M.feather')

CSV 与 Feather,你应该使用哪一个?

如果你不需要动态更改数据,答案很简单,应该使用 Feather 而不是 CSV。让我们做一些测试。

下图显示了本地保存上一节中的 DataFrame 所需的时间:

原生 Feather 比 CSV 快 150 倍左右。如果你使用 Pandas 来处理 Feather 文件并没有太大关系,但是与 CSV 相比,速度的提高是显着的。

接下来,让我们比较读取不同格式的相同数据集需要多长时间

CSV 的读取速度要慢得多。存储消耗呢?

如你所见,CSV 文件占用的空间是 Feather 文件占用的空间的两倍多。

小结

如果你每天存储千兆的数据,那么选择正确的文件格式至关重要。 Feather 在这方面摧毁了 CSV。如果你需要更多压缩,应该尝试 Parquet。 我发现它是最好的格式。总而言之,Feather 可以为你节省大量时间和磁盘空间。


技术交流

欢迎转载、收藏、有所收获点赞支持一下!

目前开通了技术交流群,群友已超过2000人,添加时最好的备注方式为:来源+兴趣方向,方便找到志同道合的朋友

方式①、发送如下图片至微信,长按识别,后台回复:加群;
方式②、添加微信号:pythoner666,备注:来自CSDN
方式③、微信搜索公众号:Python学习与数据挖掘,后台回复:加群

以上是关于停止使用 CSV 进行存储,这种文件格式快 150 倍的主要内容,如果未能解决你的问题,请参考以下文章

处理奇怪格式的csv文件

如何全局停止excel日期自动格式化[关闭]

创建方便的csv格式文件

Python,使用pandas保存数据为csv格式的文件

再见 CSV,速度提升 150 倍!

JMETER 嵌套 while 循环在 CSV 数据文件的第一行停止