Pandas图鉴之一:Pandas vs Numpy

2023年 8月 7日 75.0k 0

图片图片

Pandas[1]是用Python分析数据的工业标准。只需敲几下键盘,就可以加载、过滤、重组和可视化数千兆字节的异质信息。它建立在NumPy库的基础上,借用了它的许多概念和语法约定,所以如果你对NumPy很熟悉,你会发现Pandas是一个相当熟悉的工具。即使你从未听说过NumPy,Pandas也可以让你在几乎没有编程背景的情况下轻松拿捏数据分析问题。

Pandas 给 NumPy 数组带来的两个关键特性是:

异质类型 —— 每一列都允许有自己的类型

索引 —— 提高指定列的查询速度

事实证明,这些功能足以使Pandas成为Excel和数据库的强大竞争者。

Polars[2]是Pandas最近的转世(用Rust编写,因此速度更快,它不再使用NumPy的引擎,但语法却非常相似,所以学习 Pandas 后对学习 Polars 帮助非常大。

Pandas 图鉴系列文章由四个部分组成:

Part 1. Motivation

Part 2. Series and Index

Part 3. DataFrames

Part 4. MultiIndex

我们将拆分成四个部分,依次呈现~建议关注和星标@公众号:数据STUDIO,精彩内容等你来~

Part 1 Motivation

假设你有一个文件,里面有一百万行逗号分隔的数值,像这样:

图片图片

冒号后的空格仅用于说明问题。通常情况下,没有空格。

而你需要用NumPy对 "哪些城市的面积超过450平方公里,人口低于1000万" 这样的基本问题给出答案。

通常情况下,不推荐使用将整个表送入NumPy数组的粗暴解决方案。NumPy数组是同质类型的(=所有的值都有相同的类型),所以所有的字段都会被解译为字符串,在比大小方面也不尽人意。

虽然NumPy也有结构化数组和记录数组,允许不同类型的列,但它们主要是为了与C代码对接。当用于一般用途时,它们有以下缺点:

不太直观(例如,你将面临到处都是> np.sum([1, np.nan, 2])
nan

但使用pandas计算求和时:

>>> pd.Series([1, np.nan, 2]).sum()
3.0

一个公平的比较是用np.nansum代替np.sum,np.nanmean代替np.mean,等等。突然间...

图片图片

对于超过一百万元素的数组,Pandas变得比NumPy快1.5倍。对于较小的数组,它仍然比NumPy慢15倍,但通常情况下,操作在0.5毫秒或0.05毫秒内完成并不重要--反正是快了。

如果你100%确定你的列中没有缺失值,那么使用df.column.values.sum()而不是df.column.sum()来获得x3-x30的性能提升是有意义的。在存在缺失值的情况下,Pandas的速度是相当不错的,对于巨大的数组(超过10⁶个元素)来说,甚至比NumPy还要好。

我们将连载个后续部分,敬请期待~

参考资料

[1]Pandas: https://pandas.pydata.org/

[2]Polars: https://www.pola.rs/

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论