Code前端首页关于Code前端联系我们

Pandas2.0来了,有什么优势?

terry 2年前 (2023-09-24) 阅读数 70 #后端开发

我之前使用的pandas库是1.0版本。今年4月23日,pandas更新至2.0。经过测试,速度和常用方法都有所提高。以下是 2.0 版本的一些优点。 。 pyarrow 数据类型

pyarrow 是一个可供 Python 社区使用的 Arrow 支持库。它与 NumPy 和 Pandas 高度集成。从2.0版本开始,Pandas专门增加了对pyarrow数据类型的支持。

使用pyarrow可以让pandas在内存使用上更快、更高效地处理数据。尤其是在处理非常大的数据集时,好处更加明显。 速度

根据官方的介绍,我们都知道使用Arrow主要是提高速度,所以我们来做一个简单的测试:

使用NumPy和PyArrow读取同一个CSV文件,并比较两者。区别。

pandas2.0来了,有哪些优点?缺失值

pandas1.0标准引擎+Numpy标准数据后端处理

data = pd.read_csv(self.path + "/" + self.csv_2, encoding="gbk",)

pandas2.0来了,有哪些优点?

pandas2.0"engine="pyarrow""pyarrow引擎+数据后端处理

data = pd.read_csv(self.path + "/" + self.csv_2, encoding="gbk",engine="pyarrow",dtype_backend="pyarrow")

pandas2.0来了,有哪些优点?

这个改进堪称神来之笔。如果使用之前的默认方法将空值和数字类型放入字段中,整数类型将默认转换为小数值,这将是一场灾难。如果想转换为整数,需要先过滤,然后使用astype转换。 Arrow的引入可以完美解决问题,内存数据结构更适合省去很多问题。现在Pandas 2.0可以手动定义类型为pyarrow。

比如对于一个重要的Excel数据表,我们会复制当前的表,然后对其进行操作,以避免不小心改变了原来的数据结构。在pandas中,为了防止上述情况发生,原始数据会创建一个副本。在下面的代码中,当为子集设置新值时,原始 df 值也会更改。这不符合我们的直觉。如果您没有意识到这一点,则 df 的所有后续计算都可能会出错。偏差很大。

df = pd.DataFrame({"foo": [1, 2, 3, 4], "bar": [4, 5, 6, 7]})subset = df["foo"]subset.iloc[0] = 100print(df)

pandas2.0来了,有哪些优点?

启用copy_on_write后,子集会覆盖数据并触发复制。数据修改只影响子集本身,df数据保持不变。

pd.options.mode.copy_on_write = Truedf = pd.DataFrame({"foo": [1, 2, 3, 4], "bar": [4, 5, 6, 7]})subset = df["foo"]subset.iloc[0] = 100print(df)

pandas2.0来了,有哪些优点?

如果后面看csv格式文件,默认是pyarrow版本写的:

data = pd.read_csv(self.path + "/" + self.csv_2, encoding="gbk",engine="pyarrow",dtype_backend="pyarrow")

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门