Опция mode.copy_on_write
Опция mode.copy_on_write управляет поведением механизма Copy-on-Write в Pandas. Данная опция влияет на то, как данные копируются при изменении объектов DataFrame и Series. Когда опция включена, Pandas создает копии данных только в момент их фактического изменения, что позволяет экономить память и повышает производительность. По умолчанию опция отключена для обратной совместимости, но в будущих версиях планируется сделать её включенной по умолчанию.
Синтаксис
Управление опцией осуществляется через функцию pd.set_option для включения и pd.get_option для проверки состояния:
import pandas as pd
pd.set_option('mode.copy_on_write', True)
pd.get_option('mode.copy_on_write')
Пример
Рассмотрим поведение опции на примере изменения данных в копии таблицы:
import pandas as pd
pd.set_option('mode.copy_on_write', True)
df = pd.DataFrame({
'a': [1, 2, 3, 4, 5],
'b': [10, 20, 30, 40, 50]
})
df_copy = df
df_copy.loc[0, 'a'] = 999
print(df)
Результат выполнения кода:
a b
0 1 10
1 2 20
2 3 30
3 4 40
4 5 50
При включенной опции изменения в переменной df_copy не затрагивают исходную таблицу df, так как копирование происходит только в момент записи.
Пример
Сравним поведение при отключенной опции. В этом случае изменения в копии повлияют на исходную таблицу:
import pandas as pd
pd.set_option('mode.copy_on_write', False)
df = pd.DataFrame({
'a': [1, 2, 3, 4, 5],
'b': [10, 20, 30, 40, 50]
})
df_copy = df
df_copy.loc[0, 'a'] = 999
print(df)
Результат выполнения кода:
a b
0 999 10
1 2 20
2 3 30
3 4 40
4 5 50
При отключенной опции изменения в копии отражаются на исходной таблице, что может привести к неожиданным побочным эффектам.
Пример
Покажем, как проверить текущее состояние опции и временно изменить её с помощью контекстного менеджера:
import pandas as pd
print(pd.get_option('mode.copy_on_write'))
with pd.option_context('mode.copy_on_write', True):
print(pd.get_option('mode.copy_on_write'))
print(pd.get_option('mode.copy_on_write'))
Результат выполнения кода:
False
True
False
Смотрите также
-
функция
set_option,
которая устанавливает значения опций Pandas -
функция
get_option,
которая возвращает текущее значение опции -
функция
option_context,
которая временно изменяет опции в контексте -
опция
mode.chained_assignment,
которая управляет предупреждениями при цепочках присваивания