再见 CSV,速度提升 150 倍!

简说Python

共 2682字,需浏览 6分钟

 ·

2021-09-12 07:25

图片来源@unsplash.com

来源:Python数据科学

作者:东哥起飞


为什么要和CSV再见?

好了说了那么久,来介绍下为什么要和CSV再见。其实也谈不上彻底再见吧,日常还是要用的,这里再介绍一个更加高效的数据格式。
Python处理数据时保存和加载文件属于日常操作了,尤其面对大数据量时我们一般都会保存成CSV格式,而不是Excel。一是因为Excel有最大行数1048576的限制,二是文件占用空间更大,保存和加载速度很慢。
虽然用CSV没有行数限制,相对轻便,但是面对大数据量时还是略显拉夸,百万数据量储存加载时也要等好久。。不过很多同学都借此机会抻抻懒腰、摸摸鱼,充分利用时间也不错
其实,CSV 并不是唯一的数据存储格式。今天和大家介绍一个速度超快、更加轻量级的二进制格式保存格式:feather

Feather是什么?

Feather 是一种用于存储数据帧的数据格式。它最初是为了 PythonR 之间快速交互而设计的,初衷很简单,就是尽可能高效地完成数据在内存中转换的效率。
现在 Feather 也不仅限于 PythonR 了,基本每种主流的编程语言中都可以用 Feather 文件。不过,要说明下,它的数据格式并不是为长期存储而设计的,一般的短期存储。

如何在Python中操作Feather?

Python 中,可以通过 pandasFeather 两种方式操作。首先需要安装feather-format
# pip 
pip install feather -format 

# Anaconda 
conda install -c conda-forge feather-format
只需要上面一行安装即可,很简单。
我们通过一个较大的数据集举例,需要 FeatherNumpypandas 来一起配合。数据集有 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()
它的用法和之前csv的操作难度一个水平线,非常简单。
保存
两种方式,一是 DataFrame 直接to_featherFeather 格式:
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的区别

对比产生美。下面来看下feathercsv的差距有多大。下图显示了上面本地保存 DataFrame 所需的时间:
差距巨大,有木有!原生 Feather(图中的Native Feather)比 CSV 快了将近 150 倍左右。如果使用 pandas 处理 Feather 文件并没有太大关系,但与 CSV 相比,速度的提高是非常显著的。
然后再看下读取不同格式的相同数据集需要多长时间。
同样,差异也很明显。CSV 的读取速度要慢得多。并且CSV占用的磁盘空间也更大。
CSV 文件占用的空间是 Feather 文件占用的空间的两倍多。假如我们每天存储千兆字节的数据,那么选择正确的文件格式至关重要。Feather 在这方面完全碾压了 CSV
当然,如果追求更多的压缩空间,也可以试试Parquet,也是一个可以替代CSV 的格式。

结语

说了这么多,可能很多同学还是甩出一句话:谢谢,我选CSV 这个东西怎么说呢,当你需要它时,它就有用,如果日常没有速度和空间的强烈需求,还是老老实实CSV吧。CSV已经用惯了,改变使用习惯还是挺难的。

--End--


Python学习图书推荐:《Python+Excel职场办公数据分析》包含49个案例,配套有330分钟视频讲解。


以实战案例为主用大量的实战案例给读者演示如何处理实际工作中的办公自动化问题,如何对大数据进行分析处理。教会职场人士使用办公自动化及大数据分析解决实际问题的方法

给本文点赞,然后留言说说你为什么会想要学习编程,留言字数不低于30个,留言点赞第一和第二的读者可以获得赠书一本


另外我会随机选出一位走心留言读者,赠送图书一本


文章点赞超过100+

我将在个人视频号直播(老表Max)

带大家一起进行项目实战复现



扫码即可加我微信

老表朋友圈经常有赠书/红包福利活动

老表自己搞的,大家可以扫码关注,领取福利

现在关注,回复:0910 可以参与赠书抽奖

点击上方卡片关注公众号,回复:1024
领取最新Python学习资源

学习更多:
整理了我开始分享学习笔记到现在超过250篇优质文章,涵盖数据分析、爬虫、机器学习等方面,别再说不知道该从哪开始,实战哪里找了
点赞”就是对博主最大的支持 
浏览 34
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报