46

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

 5 years ago
source link: https://www.tuicool.com/articles/73uMRzz
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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

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

IRfyqaF.png!web

一、读取数据

读取的数据先转化为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中完成,所以大邓将代码加上注释,防止大家运行崩溃。

五、数据操作

YVJjmiq.png!web

数据的操作方法与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:大规模文本数据清洗利器

N3m6VjY.jpg!web

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

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK