再见 CSV,速度提升 150 倍!
图片来源@unsplash.com
来源:Python数据科学
作者:东哥起飞
为什么要和CSV再见?
CSV
再见。其实也谈不上彻底再见吧,日常还是要用的,这里再介绍一个更加高效的数据格式。Python
处理数据时保存和加载文件属于日常操作了,尤其面对大数据量时我们一般都会保存成CSV
格式,而不是Excel
。一是因为Excel
有最大行数1048576的限制,二是文件占用空间更大,保存和加载速度很慢。CSV
没有行数限制,相对轻便,但是面对大数据量时还是略显拉夸,百万数据量储存加载时也要等好久。。不过很多同学都借此机会抻抻懒腰、摸摸鱼,充分利用时间也不错![](https://filescdn.proginn.com/a85128531bb3f40db1c323e791432209/01317b4d3c92e5fa23b526502cb35d27.webp)
CSV
并不是唯一的数据存储格式。今天和大家介绍一个速度超快、更加轻量级的二进制格式保存格式:feather。Feather是什么?
Feather
是一种用于存储数据帧的数据格式。它最初是为了 Python
和 R
之间快速交互而设计的,初衷很简单,就是尽可能高效地完成数据在内存中转换的效率。Feather
也不仅限于 Python
和 R
了,基本每种主流的编程语言中都可以用 Feather
文件。不过,要说明下,它的数据格式并不是为长期存储而设计的,一般的短期存储。如何在Python中操作Feather?
Python
中,可以通过 pandas
或 Feather
两种方式操作。首先需要安装feather-format
。# pip
pip install feather -format
# Anaconda
conda install -c conda-forge feather-format
Feather
、Numpy
和 pandas
来一起配合。数据集有 5 列和 1000 万行随机数。import feather
import numpy as np
import pandas as pd
np.random.seed = 42
df_size = 10000000
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()
![](https://filescdn.proginn.com/340896ea20e92ff62f46a8d6830a4e3a/834a971db1429863d9ac4aefcec9580c.webp)
csv
的操作难度一个水平线,非常简单。DataFrame
直接to_feather
的 Feather
格式:df.to_feather('1M.feather')
Feather
库执行相同操作的方法:feather.write_dataframe(df, '1M.feather')
pandas
加载:df = pd.read_feather('1M.feather')
Feather
加载:df =feather.read_dataframe('1M.feather')
和CSV的区别
feather
和csv
的差距有多大。下图显示了上面本地保存 DataFrame 所需的时间:![](https://filescdn.proginn.com/0e2ac4ac1105d840dc77a1dedfc0e3fd/50f626ae865516b49db27c48d7bc6e73.webp)
Feather
(图中的Native Feather
)比 CSV
快了将近 150 倍左右。如果使用 pandas
处理 Feather
文件并没有太大关系,但与 CSV
相比,速度的提高是非常显著的。![](https://filescdn.proginn.com/b9e4414577c508a0e3e850ef713db7e6/4878c4bc1c83463c8a0d8452d4021a80.webp)
CSV
的读取速度要慢得多。并且CSV
占用的磁盘空间也更大。![](https://filescdn.proginn.com/90d37d7c0f8bd9b4472da067caf981dc/ce853b66ee45e3d3dedf990d9a50efd8.webp)
CSV
文件占用的空间是 Feather
文件占用的空间的两倍多。假如我们每天存储千兆字节的数据,那么选择正确的文件格式至关重要。Feather
在这方面完全碾压了 CSV
。Parquet
,也是一个可以替代CSV
的格式。结语
![](https://filescdn.proginn.com/a071963f12efa15f7d55079ad37c1b78/ac9dfc22baf18272b8c5a4d5d0f25408.webp)
![](https://filescdn.proginn.com/efeefd0153c61116b7ef446f0476295c/59a3c89a173ae3573384bf33a89339a6.webp)
CSV
吧。CSV
已经用惯了,改变使用习惯还是挺难的。--End--
Python学习图书推荐:《Python+Excel职场办公数据分析》包含49个案例,配套有330分钟视频讲解。
以实战案例为主,用大量的实战案例给读者演示如何处理实际工作中的办公自动化问题,如何对大数据进行分析处理。教会职场人士使用办公自动化及大数据分析解决实际问题的方法。
给本文点赞,然后留言说说你为什么会想要学习编程,留言字数不低于30个,留言点赞第一和第二的读者可以获得赠书一本;
另外我会随机选出一位走心留言读者,赠送图书一本。
文章点赞超过100+
我将在个人视频号直播(老表Max)
带大家一起进行项目实战复现
扫码即可加我微信
老表朋友圈经常有赠书/红包福利活动
老表自己搞的,大家可以扫码关注,领取福利
现在关注,回复:0910 可以参与赠书抽奖
点击上方卡片关注公众号,回复:1024 领取最新Python学习资源 学习更多: 整理了我开始分享学习笔记到现在超过250篇优质文章,涵盖数据分析、爬虫、机器学习等方面,别再说不知道该从哪开始,实战哪里找了 “点赞”就是对博主最大的支持
评论