inplace
매개 변수 :
df.dropna(axis='index', how='all', inplace=True)
의 Pandas
일반적인 수단 :
1. Pandas는 원본 데이터의 복사본을 만듭니다.
2. ... 그것에 대해 계산을합니다.
3. ... 결과를 원본 데이터에 할당합니다.
4. ... 사본을 삭제합니다.
당신은 내 대답의 나머지 부분에서 읽을 수 있듯이 우리는 여전히 더 아래의 수 IE의이 매개 변수를 사용하는 좋은 이유가 inplace operations
있지만, 우리가 할 수있는 경우가로 더 많은 문제를 발생으로 우리는 그것을 피해야한다 :
1. 코드를 디버그하기가 더 어려워집니다 (실제로 SettingwithCopyWarning 은이 가능한 문제에 대한 경고를 의미합니다)
2. 메소드 체인과의 충돌
그래서 우리가 그것을 사용해야 할 경우도 있습니까?
분명하게 예입니다. 팬더 또는 거대한 데이터 세트를 처리하는 도구를 사용하면 일부 빅 데이터가 전체 메모리를 소비 할 수있는 상황에 쉽게 직면 할 수 있습니다. 이 원치 않는 효과를 피하기 위해 메서드 체인 과 같은 몇 가지 기술을 사용할 수 있습니다 .
(
wine.rename(columns={"color_intensity": "ci"})
.assign(color_filter=lambda x: np.where((x.hue > 1) & (x.ci > 7), 1, 0))
.query("alcohol > 14 and color_filter == 1")
.sort_values("alcohol", ascending=False)
.reset_index(drop=True)
.loc[:, ["alcohol", "ci", "hue"]]
)
이는 코드를 더 간결하게 만들고 (해석과 디버그도 더 어렵지만) 연결된 메서드가 다른 메서드의 반환 된 값과 함께 작동하므로 메모리를 덜 사용하므로 입력 데이터의 복사본 이 하나만 생성됩니다 . 이 작업 후에 원래 데이터 메모리 사용량 이 2 배가 될 것임을 분명히 알 수 있습니다 .
또는 inplace
매개 변수 를 사용할 수 있습니다 (해석 및 디버깅도 더 어렵지만) 메모리 소비는 2 x 원본 데이터 이지만이 작업 후 메모리 소비는 1 x 원본 데이터로 유지 됩니다. 누군가가 거대한 데이터 세트로 작업 할 때마다 정확히 알고있는 경우 큰 이익.
최종 결론 :
inplace
대용량 데이터로 작업하지 않는 한 매개 변수 사용을 피하고 여전히 사용하는 경우 가능한 문제를 인식하십시오.
inplace=True
반환None
inplace=False
은 작업이 수행 된 객체의 복사본을 반환 합니다. 문서는 이것에 대해 꽤 분명합니다. 특정 부분과 혼동되는 것이 있습니까? SpeficallyIf True, do operation inplace and return None.