gpt4 book ai didi

python - pandas 中的 groupby 是创建数据的副本还是只是一个 View ?

转载 作者:太空狗 更新时间:2023-10-30 00:12:39 46 4
gpt4 key购买 nike

pandas.DataFrame.groupby 是创建数据的副本还是只是一个 View ?在(更有可能)不创建副本的情况下,额外的内存开销是多少?它如何根据原始数据帧的特性(例如行数、列数、不同组数)进行扩展?

最佳答案

groupby code in pandas变得有点复杂,所以很难从第一原则中找出答案。快速测试使内存使用似乎随着数据的增长而增长,并且更多的组 = 更多的内存,但它似乎并没有制作完整的副本或任何东西:

In [7]: df = pd.DataFrame(np.random.random((1000,5)))

In [8]: def ret_df(df):
...: return df

In [9]: def ret_gb_df(df):
...: return df, df.groupby(0).mean()

In [10]: %memit ret_df(df)
peak memory: 75.91 MiB, increment: 0.00 MiB

In [11]: %memit ret_gb_df(df)
peak memory: 75.96 MiB, increment: 0.05 MiB

In [12]: df = pd.DataFrame(np.random.random((100000,5)))

In [13]: %memit ret_df(df)
peak memory: 79.76 MiB, increment: -0.02 MiB

In [14]: %memit ret_gb_df(df)
peak memory: 94.88 MiB, increment: 15.12 MiB

In [15]: df = pd.DataFrame(np.random.random((1000000,5)))

In [16]: %memit ret_df(df)
peak memory: 113.98 MiB, increment: 0.01 MiB

In [17]: %memit ret_gb_df(df)
peak memory: 263.14 MiB, increment: 149.16 MiB

In [18]: df = pd.DataFrame(np.random.choice([0,1,2,3], (1000000, 5)))

In [19]: %memit ret_df(df)
peak memory: 95.34 MiB, increment: 0.00 MiB

In [20]: %memit ret_gb_df(df)
peak memory: 166.91 MiB, increment: 71.56 MiB

关于python - pandas 中的 groupby 是创建数据的副本还是只是一个 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52711823/

46 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com