这篇教程pandas初学者容易犯的六个错误总结写得很实用,希望能帮到您。 我们在这里讨论6个新手容易犯的错误,这些错误与你所使用工具的API或语法无关,而是与你的知识和经验水平直接相关。在实际中如果出现了这些问题可能不会有任何的错误提示,但是在应用中却会给我们带来很大的麻烦。
使用pandas自带的函数读取大文件第一个错误与实际使用Pandas完成某些任务有关。具体来说我们在实际处理表格的数据集都非常庞大。使用pandas的read_csv读取大文件将是你最大的错误。 为什么?因为它太慢了!看看这个测试,我们加载TPS十月数据集,它有1M行和大约300个特性,占用了2.2GB的磁盘空间。 import pandas as pd%%timetps_october = pd.read_csv("data/train.csv")Wall time: 21.8 s read_csv花了大约22秒。你可能会说22秒并不多。但是在一个项目中,需要在不同的阶段执行许多实验。我们会创建很多单独的脚本,用于清理、特征工程、选择模型,以及其他任务。多次等待数据加载20秒就变得很长了。此外,数据集可能会更大时间就会更长。那么有什么更快的解决方案呢? 解决方案是在这个阶段放弃Pandas,使用其他为快速IO设计的替代方案。我最喜欢的是datatable,但你也可以选择Dask, Vaex, cuDF等。这里是用datatable加载相同的数据集所需要的时间: import datatable as dt # pip install datatble%%timetps_dt_october = dt.fread("data/train.csv").to_pandas()------------------------------------------------------------Wall time: 2 s 只有2秒,10倍差距
没有矢量化函数式编程中最重要的规则之一就是永远不要使用循环。似乎在使用 Pandas 时坚持这个“无循环”规则是加速计算的最佳方法。 函数式编程用递归代替循环。虽然递归也会出现各种问题(这个我们这里不考虑),但是对于科学计算来说使用矢量化是最好的选择! 矢量化是 Pandas 和 NumPy 的核心,它对整个数组而不是单个标量执行数学运算。 Pandas 已经拥有一套广泛的矢量化函数,我们无需重新发明轮子,只要关注我们的重点如何计算就好了。 在 Pandas 中进行Python 的大部分算术运算符(+、-、*、/、**)都以矢量化方式工作。此外,在 Pandas 或 NumPy 中看到的任何其他数学函数都已经矢量化了。 为了验证到速度的提高,我们将使用下面的 big_function,它以三列作为输入并执行一些无意义的算术作为测试: def big_function(col1, col2, col3): return np.log(col1 ** 10 / col2 ** 9 + np.sqrt(col3 ** 3)) 首先,我们将这个函数与 Pandas 最快的迭代器 如何利用Python打开txt格式的文件 2行Python实现给图片加水印效果 |