再见 CSV,速度提升 150 倍!
大家好,我是东哥。
前几天有个粉丝留言,说
pandas
的100个骚操作系列为什么只有21个啊?这里和大家说一下,这个系列「
pandas100个骚操作
」还在持续更新中。由于平时工作较忙,更新稍慢,不过还是在一直更新的。
我的原计划是输出100个,目前来看可能最终不一定会到100个,但每个都是超实用且平时经常会遇到的问题。
pandas
的用法太多了,如果不熟练,平时是需要经常网上查找的,这个系列可以帮助大家快速回忆用法。
或者万一平时遇到问题查不到无法解决,也可以过来看下,毕竟某度上是查不到微信文章的。 该系列预计25-30篇文章的时候,东哥会总结成第一版的PDF电子版,方便大家使用。剩下来的继续更新迭代版本。
好了说了那么久,来介绍下为什么要和
CSV
再见。用
Python
处理数据时保存和加载文件属于日常操作了,尤其面对大数据量时我们一般都会保存成
CSV
格式,而不是
Excel
。
一是因为
Excel
有最大行数1048576的限制,二是文件占用空间更大,保存和加载速度很慢。
虽然用
CSV
没有行数限制,相对轻便,但是面对大数据量时还是略显拉夸,百万数据量储存加载时也要等好久。。不过很多同学都借此机会抻抻懒腰、摸摸鱼,充分利用时间。
其实,
CSV
并不是唯一的数据存储格式。今天和大家介绍一个速度超快、更加轻量级的二进制格式保存格式:
feather
。
要d唉,你将学会羽毛数据格式的来龙去脉-用于存储数据帧快速,轻量级的二进制格式。
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-forgefeather-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),