Создает ли groupby в пандах копию данных или просто представление? - PullRequest
0 голосов
/ 09 октября 2018

Создает ли pandas.DataFrame.groupby копию данных или просто представление?В (более вероятном) случае не создания копии, какие дополнительные затраты памяти и как она масштабируется с исходными характеристиками кадра данных (например, количество строк, столбцов, отдельных групп)?

1 Ответ

0 голосов
/ 09 октября 2018

Групповой код в пандах становится немного сложным, поэтому его трудно понять из первых принципов.При быстром тестировании создается впечатление, что использование памяти увеличивается по мере роста данных, и что больше групп = больше памяти, но не создается полная копия или что-то еще:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...