当前位置:  开发笔记 > 编程语言 > 正文

关于使用pandas inplace关键字参数的指南

如何解决《关于使用pandasinplace关键字参数的指南》经验,为你挑选了1个好方法。

使用指南是inplace什么?

例如,

df = df.reset_index()

要么

df.reset_index(inplace=True)

相识又有差别?



1> YS-L..:

就生成的DataFrame而言df,这两种方法是相同的.不同之处在于(最大)内存使用量,因为就地版本不会创建DataFrame的副本.

考虑这个设置:

import numpy as np
import pandas as pd

def make_data():
    return pd.DataFrame(np.random.rand(1000000, 100))

def func_copy():
    df = make_data()
    df = df.reset_index()

def func_inplace():
    df = make_data()
    df.reset_index(inplace=True)

我们可以使用该memory_profile库对内存使用情况执行一些基准测试:

%load_ext memory_profiler

%memit func_copy()
# peak memory: 1602.66 MiB, increment: 1548.66 MiB

%memit func_inplace()
# peak memory: 817.02 MiB, increment: 762.94 MiB

正如预期的那样,就地版本的内存效率更高.

另一方面,当数据大小足够大时(例如在上面的例子中),方法之间的运行时间似乎也存在非平凡的差异:

%timeit func_copy()
1 loops, best of 3: 2.56 s per loop

%timeit func_inplace()
1 loops, best of 3: 1.35 s per loop

根据用例(例如,特殊探索性分析与生产代码),数据大小和可用的硬件资源,这些差异可能会也可能不会很大.通常,尽可能使用就地版本以获得更好的内存和运行时效率可能是个好主意.

推荐阅读
oDavid_仔o_880
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有