数据存储格式对比:Feather与CSV

在处理项目中的数据传输和处理时,选择合适的数据存储格式至关重要。传统的CSV文件格式在数据量不大时表现尚可,但随着数据量的增加,其存储和加载数据的过程变得缓慢,导致数据处理效率降低。因此,寻找更高效的数据存储格式成为了一个迫切的需求。

Feather格式作为一种轻量级的二进制数据存储格式,以其快速和便携的特性,逐渐成为数据存储的新选择。Feather利用Apache Arrow的列式内存规范来表示磁盘上的二进制数据,这大大加快了读写操作的速度。特别是对于编码空值/NA值和具有可变长度的类型(如UTF8字符串)来说,Feather格式的优势更为明显。

Feather格式不仅仅局限于Python和R这两种编程语言,它可以被任何主流编程语言所使用。虽然Feather的原始目标是促进R和Python脚本之间的数据交换,以及一般性的短期存储,但没有人阻止将这些文件保存到磁盘上并遗忘它们多年,尽管有更高效的格式可供选择。

Feather格式的安装与使用

在Python中,可以通过Pandas库或独立的Feather库来使用Feather格式。以下是如何在Python中安装和使用Feather格式的步骤。

pip install feather-format

在R中,可以使用以下命令安装Feather格式:

install.packages("feather")

以下是如何在Python中使用Feather格式的基本步骤:首先加载所需的库,然后生成一个包含七列和一千万行随机数的大型数据集。

import feather import numpy as np import pandas as pd # np.random.seed = 40 print("something") df_size = 1000 dataf = 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), 'f': np.random.rand(df_size), 'g': np.random.rand(df_size) }) print(dataf.head())

接下来,将数据集保存到本地。使用Pandas将DataFrame保存为Feather格式的命令如下:

dataf.to_feather('one_million.feather')

使用Feather库保存数据的方式如下:

feather.write_dataframe(dataf, 'one_million.feather')

两种方法之间没有太大的区别,现在两个文件都已存储在本地。可以使用Pandas或专门的Feather库来读取它们。以下是使用Pandas语法读取Feather文件的方法:

df = pd.read_feather('one_million.feather')

如果使用的是Feather库,可以将其更改为:

df = feather.read_dataframe('one_million.feather')

Feather格式的优势

Feather格式支持多种数据类型,包括逻辑或布尔值、有限范围的因子/分类变量、UTF-8编码的字符串、多种数值类型(int8, int16, int32, int64, uint8, uint16, uint32, uint64, float, double)、任意二进制数据、日期、时间和时间戳。

Feather格式与CSV格式相比,在文件大小、读取时间和写入时间上都有显著的优势。以下是Feather格式与CSV格式的性能对比数据:

CSV (Pandas) 本地保存时间(秒) - 35.6秒

Feather (Pandas) 本地保存时间(秒) - 0.289秒

原生Feather本地保存时间(秒) - 0.235秒

这表明原生Feather的保存速度是CSV的150倍。无论是使用Pandas还是原生Feather,与CSV相比,速度提升都是巨大的。

接下来,来看读取时间,即读取相同数据集在不同格式下所需的时间:

CSV (Pandas) 本地读取时间(秒) - 3.85秒

Feather (Pandas) 本地读取时间(秒) - 0.472秒

原生Feather本地读取时间(秒) - 0.326秒

再次出现了巨大的差异。CSV文件占用的磁盘空间更多,具体来说:

CSV (Pandas) 文件大小 - 963.5 MB

Feather (Pandas) 文件大小 - 400.1 MB

原生Feather文件大小 - 400.1 MB

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485