datatable:比pandas更快的GB量级的库

虽然pandas是数据分析、机器学习等必备利器,但现在流行的机器学习应用训练模型动辄需要GB级别的数据,很多时候pandas无法快速读取大数据文件或者进行高效运算,甚至可能存在内存溢出等情况。

如果是R语言的用户应该很熟悉data.table库, 该库是R语言中data.frame库的拓展库,可以让R语言用户轻松处理海量数据,比如让电脑很轻松高速地读取100Gb文件。现在python生态圈也有了自己的data.table,这个库的名字叫做datatable。目前datatable不支持windows系统,相应的windows版本正在开发中。

一、读取数据

读取的数据先转化为Frame对象,是一种拥有很多行很多列的二维数组,功能类似于DataFrame或者SQL表。

我们用的测试数据来源于Kaggle的lending数据集 https://www.kaggle.com/wendykan/lending-club-loan-data#loan.csv, 该数据集包括2007-2015年的含有相关145个特征,共计226万条贷款记录。文件大概700M,我们可以使用pandas和datatable库分别读取,测试读取速度

Run

再来看看pandas读取

从上面两个读取方式看,pandas用时1分钟,而datatable用时14.2秒

二、 Frame转换

datatable读取数据可以转化为pd.DataFrame

正常来讲使用datatable读取数据再转化为pd.DataFrame格式 比 直接使用pandas读取要快一些。

三、基本的Frame属性

显示前10行

字段名的颜色表示数据类型,其中红色表示文本,绿色表示整数,蓝色表示浮点型。

四、描述性统计

在pandas中进行描述性统计是一件很吃内存的进程,但datatable不怕这事。

例如我们分别使用datatable和pandas来计算mean

因为会抛出内存错误,上面的 pandas_df.mean() 无法在pandas中完成,所以大邓将代码加上注释,防止大家运行崩溃。

五、数据操作

数据的操作方法与dataframe类似

5.1 数据选择

选中所有行, 列只选择funded_amnt列

5.2 排序

根据 funded_ amnt_ inv 列进行排序

CPU times: user 534 ms, sys: 67.96 ms, total: 602 ms                              

还别说,datatable一眨眼功夫就出来,排序真的很快

而pandas排序用了12.4s,慢!

5.3 删除列

删除指定列,如下。

5.4 条件筛选

条件筛选也跟dataframe很类似,这里要注意代码中的f代指的是Frame。输出的数据行列分别:

  • 所有的行中loan_ amnt要大于funded_ amnt

  • 只输出loan_amnt列

5.5 保存结果

总结

与鼎鼎大名的pandas相比,datatable有很高效的执行速度,这在处理大型数据集时肯定是一个福音。 然而就功能而言,datatable落后于pandas。 但由于datatable仍在更新迭代,我们可能会在未来看到该库的一些重要补充。

推荐阅读

【视频课】文本数据分析快速入门

2019Stata & Python 实证计量与爬虫分析暑期工作坊

国人开发的数据可视化神库 pyecharts

pandas_profiling:生成动态交互的数据探索报告

cufflinks: 让pandas拥有plotly的炫酷的动态可视化能力

使用Pandas、Jinja和WeasyPrint制作pdf报告

使用Pandas更好的做数据科学

使用Pandas更好的做数据科学(二)

少有人知的python数据科学库

folium:地图数据可视化库

学习编程遇到问题,该如何正确的提问?

100G 文本分析语料资源(免费下载)  

如何用Google Colab高效的学习Python

大神kennethreitz写出requests-html号称为人设计的解析库

flashtext:大规模文本数据清洗利器

如果想要获取更多例子,可以关注本公众号,

后台回复 20190609 获得本教程的notebook代码下载方式