用羽毛替换 CSV
用羽毛替换 CSV
一个 逗号分隔值 ( CSV ) 文件是分隔的 文本文件 使用一个 逗号 分隔值。文件的每一行都是一个数据 记录 .每条记录由一个或多个 字段 , 被逗号隔开。
在数据科学中,CSV 格式主要用于社区,尤其是用于学习或从一个点发送到另一个点。对于大数据集,CSV 的读写时间可能会成为问题。
为了解决这个问题并执行更有效的数据交换过程,开发了 Feather 格式。正如他们自己所说,Feather 是一种“用于 R 和 Python 的数据帧的快速磁盘格式,由 Apache Arrow 提供支持”。它旨在加快存储和导入数据帧的过程,使其更加高效。
什么是羽毛?
Feather 是一种快速、轻量级且易于使用的二进制文件格式,用于存储数据帧。它有几个具体的设计目标:
- 轻量级、最小化 API:尽可能简单地将数据帧推入和推出内存
- 与语言无关:无论是由 Python 还是 R 代码编写的羽毛文件都是相同的。其他语言也可以读写 Feather 文件。
- 高读写性能。如果可能,羽化操作应受本地磁盘性能的约束。
熊猫的羽毛
Pandas 已经有一个 read_feather() 函数,并且所有 pandas DataFrames 都有属性 to_feather() ,这使我们可以像处理普通 .csv 文件一样使用 Feather。
优点
- 与 CSV 相比,文件大小更小
- 对数据帧进行更快的读写操作。
羽毛与 csv
我们将创建假数据来比较读写速度以及文件大小。该数据集将包含 900 万行和 10 列。
导入库
#导入库 将熊猫导入为 pd
将 numpy 导入为 np
进口时间
进口我们
生成数据
#生成数据 列 = 10
行 = 9000000
np.random.seed(0) df = pd.DataFrame(np.random.rand(行,列),
列=[“column_1”、“column_2”、“column_3”、“column_4”、“column_5”、“column_6”、“column_7”、“column_8”、“column_9”、“column_10”])
使用羽毛
#使用羽毛 time_feather = time.process_time()
df.to_feather('data.feather')
feather_write = time.process_time() - time_feather
time_feather = time.process_time()
羽毛 = pd.read_feather('data.feather')
feather_read = time.process_time() - time_feather
使用 CSV
#使用 csv time_feather = time.process_time()
df.to_csv('data.csv', index=False)
csv_write = time.process_time() - time_feather
time_feather = time.process_time()
csv = pd.read_csv('data.csv')
csv_read = time.process_time() - time_feather
文件大小
#文件大小 file_size = os.stat('data.feather')
羽毛尺寸=圆形(file_size.st_size /(1024 * 1024),3)
file_size = os.stat('data.csv')
csv_size = round(file_size.st_size / (1024 * 1024), 3)
比较时间
# 比较时间 df = pd.DataFrame({'Write(s)': [feather_write, csv_write],'Read(s)': [feather_read, csv_read],'Size (mb)': [feather_size, csv_size]},index=[ '羽毛','CSV'])
打印(df)
结果
速度和文件大小的差异令人印象深刻。
结论
Feather 是一种优化且高效的数据存储方式。无论是读取还是写入操作都很快,并且可以最小化文件大小。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明