表格是存储数据的最典型方式,在Python环境中没有比Pandas更好的工具来操作数据表了。 尽管Pandas具有广泛的能力,但它还是有局限性的。比如,如果数据集超过了内存的大小,就必须选择一种替代方法。 但是,如果在内存合适的情况下放弃Pandas使用其他工具是否有意义呢?
Pandas是一种方便的表格数据处理器,提供了用于加载,处理数据集并将其导出为多种输出格式的多种方法。 Pandas可以处理大量数据,但受到PC内存的限制。 数据科学有一个黄金法则。 如果数据能够完全载入内存(内存够大),请使用Pandas。 此规则现在仍然有效吗?
为了验证这个问题,让我们在中等大小的数据集上探索一些替代方法,看看我们是否可以从中受益,或者咱们来确认只使用Pandas就可以了。
您可以在GitHub上查看完整的代码
pandas_alternatives_POC.ipynb —探索dask,spark,vaex和modin julia_POC.ipynb —探索julia和julia性能测试 Performance_test.py —运行python性能测试控制台运行 Results_and_Charts.ipynb —处理性能测试日志并创建图表
Pandas替代
让我们首先探讨反对替代Pandas的论点。
1. 他们不像Pandas那么普遍
1. 文档,教程和社区支持较小
我们将逐一回顾几种选择,并比较它们的语法,计算方法和性能。 我们将看一下Dask,Vaex,PySpark,Modin(全部使用python)和Julia。 这些工具可以分为三类:
· 并行/云计算— Dask,PySpark和Modin
· 高效内存利用— Vaex
· 不同的编程语言— Julia
数据集
对于每种工具,我们将使用Kaggle欺诈检测数据集比较基本操作的速度。 它包含两个文件traintransaction.csv(〜700MB)和trainidentity.csv(〜30MB),我们将对其进行加载,合并,聚合和排序,以查看性能有多快。 我将在具有16GB RAM的4核笔记本电脑上进行这些操作。
主要操作包括加载,合并,排序和聚合数据
Dask-并行化数据框架
Dask的主要目的是并行化任何类型的python计算-数据处理,并行消息处理或机器学习。 扩展计算的方法是使用计算机集群的功能。 即使在单台PC上,也可以利用多个处理核心来加快计算速度。
Dask处理数据框的模块方式通常称为DataFrame。 它的功能源自并行性,但是要付出一定的代价:
1. Dask API不如Pandas的API丰富
1. 结果必须物化
Dask的语法与Pandas非常相似。
扫描关注:"WEB开发者网“公众号,分享WEB开发知识,让开发变得更简单!