公众号后台回复“图书“,了解更多号主新书内容
作者:东哥起飞
来源:Python数据科学
前几天有个粉丝留言,说pandas
的100个骚操作系列为什么只有21个啊?这里和大家说一下,这个系列「pandas100个骚操作。
![26cfc2e32cb86e15e8ba3c2602406a2a.png](https://i-blog.csdnimg.cn/blog_migrate/3f716b4f7689ec2fae6f3af6ecab98be.jpeg)
我的原计划是输出100个,目前来看可能最终不一定会到100个,但每个都是超实用且平时经常会遇到的问题。pandas
的用法太多了,如果不熟练,平时是需要经常网上查找的,这个系列可以帮助大家快速回忆用法。
或者万一平时遇到问题查不到无法解决,也可以过来看下,毕竟某度上是查不到微信文章的。该系列预计25-30篇文章的时候,东哥会总结成第一版的PDF电子版,方便大家使用。剩下来的继续更新迭代版本。
为什么要和CSV再见?
好了说了那么久,来介绍下为什么要和CSV
再见。其实也谈不上彻底再见吧,日常还是要用的,这里再介绍一个更加高效的数据格式。
用Python
处理数据时保存和加载文件属于日常操作了,尤其面对大数据量时我们一般都会保存成CSV
格式,而不是Excel
。一是因为Excel
有最大行数1048576的限制,二是文件占用空间更大,保存和加载速度很慢。
虽然用CSV
没有行数限制,相对轻便,但是面对大数据量时还是略显拉夸,百万数据量储存加载时也要等好久。。不过很多同学都借此机会抻抻懒腰、摸摸鱼,充分利用时间也不错。
其实,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-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),
'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()
![b37db076738debf018c94a2a4745cee1.png](https://i-blog.csdnimg.cn/blog_migrate/c8d3f5d036c1077a61348001b00193c5.png)
它的用法和之前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 所需的时间:
![eb3e3aed51ac57e459387735973b8a52.png](https://i-blog.csdnimg.cn/blog_migrate/3ab1f6428988ec1d9e26cd84672f0b5e.png)
差距巨大,有木有!原生 Feather
(图中的Native Feather
)比 CSV
快了将近 150 倍左右。如果使用 pandas
处理 Feather
文件并没有太大关系,但与 CSV
相比,速度的提高是非常显著的。
然后再看下读取不同格式的相同数据集需要多长时间。
![60fd8f2a813fea19879f320c0513f955.png](https://i-blog.csdnimg.cn/blog_migrate/8fd52323900c63fcf421136330b62608.png)
同样,差异也很明显。CSV
的读取速度要慢得多。并且CSV
占用的磁盘空间也更大。
![a6eb85912e7bb03fa91c63c67cf8d3a8.png](https://i-blog.csdnimg.cn/blog_migrate/437d00053e041ef4f47ede4f05bafe33.png)
CSV
文件占用的空间是 Feather
文件占用的空间的两倍多。假如我们每天存储千兆字节的数据,那么选择正确的文件格式至关重要。Feather
在这方面完全碾压了 CSV
。
当然,如果追求更多的压缩空间,也可以试试Parquet
,也是一个可以替代CSV
的格式。
◆ ◆ ◆ ◆ ◆
麟哥新书已经在当当上架了,我写了本书:《拿下Offer-数据分析师求职面试指南》,目前当当正在举行活动,大家可以用相当于原价5折的预购价格购买,还是非常划算的:
数据森麟公众号的交流群已经建立,许多小伙伴已经加入其中,感谢大家的支持。大家可以在群里交流关于数据分析&数据挖掘的相关内容,还没有加入的小伙伴可以扫描下方管理员二维码,进群前一定要关注公众号奥,关注后让管理员帮忙拉进群,期待大家的加入。
管理员二维码:
猜你喜欢
● 卧槽!原来爬取B站弹幕这么简单
● 厉害了!麟哥新书登顶京东销量排行榜!
● 笑死人不偿命的知乎沙雕问题排行榜
● 用Python扒出B站那些“惊为天人”的阿婆主!
● 你相信逛B站也能学编程吗