Pandas 和 Numpy 的差别

Pandas 和 Numpy 的差别

作者: 莫烦 编辑: 莫烦 发布于: 2021-11-27

第一节我们已经讲过,Pandas 是在 Numpy 上的封装。 继承了 Numpy 的所有优点,但是这种封装有好有坏,我们在这节内容中就先来阐述一下 Pandas 和 Numpy 的对比。

类比 Python

用过 Python,你肯定熟悉里面的 List 和 Dictionary, 我比较常拿这两种形态来对比 Numpy 和 Pandas 的关系。

上面就是一种最常见的 Python 列表和字典表达方式。而下面,我们展示的就是 Numpy 和 Pandas 的一种构建方式。 试着点击一下方的 Run 按钮执行代码结果。

你会发现,我们看到的结果中,Numpy 的是没有任何数据标签信息的,你可以认为它是纯数据。而 Pandas 就像字典一样,还记录着数据的外围信息, 比如标签(Column 名)和索引(Row index)。 这也是我为什么总说 Numpy 是 Python 里的列表,而 Pandas 是 Python 里的字典。

对比 Numpy

还是回到之前提的问题,对于数据运算,既然我们有了 Numpy,为什么还要用 Pandas?。对比列表和字典,我们很容易感受到其中的一种原因。 就是 Pandas 帮我们记录的信息量变多了。

在 Numpy 中, 如果你不特别在其他地方标注,你是不清楚记录的这里边记录的是什么信息的。而 Pandas 记录的信息可以特别丰富, 你给别人使用传播数据的时,这些信息也会一起传递过去。或者你自己处理数据时对照着信息来加工数据,也会更加友善。

这就是在我看来 Pandas 对比 Numpy 的一个最直观的好处。

另外 Pandas 用于处理数据的功能也比较多,信息种类也更丰富,特别是你有一些包含字符的表格,Pandas 可以帮你处理分析这些字符型的数据表。 当然还有很多其它功能,比如处理丢失信息,多种合并数据方式,读取和保存为更可读的形式等等。

这些都让 Pandas 绽放光彩。但是,Pandas 也有不足的地方:运算速度稍微比 Numpy 慢。

你想想,因为 Pandas 是在 Numpy 之上的一层封装,所以肯定在处理数据的时候要多几层处理,小数据量的处理不要紧,慢一点就慢一点, 你也感受不到处理速度的变化。但当数据量变大,用 Numpy 要处理 1 小时的数据,你可能用 Pandas 要花两小时。 所以你得依据自己的实际需求来选择到底是用 Numpy 还是 Pandas。

像我,如果在做少量数据的分析时,因为不涉及到机器学习的模型运算等,我都可以用 Pandas,但如果要模型训练, 训练过程中还一直要调用数据处理的功能, 我肯定毫不犹豫都用 Numpy 来做。

总结

Pandas 是 Numpy 的封装库,继承了 Numpy 的很多优良传统,也具备丰富的功能组件,但是你还是得分情况来酌情选择要使用的工具。


降低知识传递的门槛

莫烦经常从互联网上学习知识,开源分享的人是我学习的榜样。 他们的行为也改变了我对教育的态度: 降低知识传递的门槛免费 奉献我的所学正是受这种态度的影响。 【支持莫烦】 能让我感到认同,我也更有理由坚持下去。

我组建了微信群,欢迎大家加入,交流经验,提出问题,互相帮持。 扫码后,请一定备注"莫烦",否则我不会同意你的入群申请。

wechat

    数据的伙伴 Pandas