뷰 생성과 복사 생성에 대한 Pandas 규칙
Pandas는 DataFrame에 대한 슬라이스 작업의 결과가 뷰인지 아니면 뷰인지 결정할 때 특정 규칙을 사용합니다. 복사. 이러한 규칙을 이해하면 데이터 조작을 최적화하고 예상치 못한 동작을 방지할 수 있습니다.
항상 복사본을 생성하는 작업으로 시작:
- 수정하도록 특별히 설계된 작업을 제외한 모든 작업 DataFrame을 제자리에 복사하고 복사본을 만듭니다.
- 특정 작업만 inplace=True 매개변수를 지원하므로 원본 DataFrame에서 직접 수정이 발생할 수 있습니다.
다음으로 작업을 고려해 보겠습니다. 뷰가 발생할 수 있습니다.
- .loc, .iloc, .iat 및 .at와 같은 값을 설정하는 인덱서는 복사본을 생성하지 않고 원본 DataFrame을 수정하면서 내부에서 작동합니다.
- 기본 메모리 레이아웃이 이 최적화를 방해하지 않는 한 단일 dtype 개체에서 데이터를 검색하는 인덱서는 일반적으로 뷰를 생성합니다.
- 반대로, 다중 dtype 개체에서 데이터를 검색하는 인덱서는 항상 복사본을 생성합니다.
예제와 관련하여:
- df.query('2 < index <= 5')는 숫자가 포함되어 있으므로 복사본을 반환합니다. 표현식 평가.
- df.iloc[3] = 70 및 df.ix[1, 'B':'E'] = 222 단일 dtype 객체에 액세스하고 그 자리에서 값을 설정하기 때문에 df를 변경합니다.
- df[df.C <= df.B]는 단일 dtype 객체(결과 부울 마스크)에서 내부 설정자(df[...])를 사용하기 때문에 df를 수정합니다.
- 그러나 df[df.C <= df.B].ix[:,'B':'E']는 df를 수정하지 않습니다. 왜냐하면 연결된 인덱싱 작업이 포함되어 있기 때문입니다. Pandas가 차단합니다.
쿼리를 기반으로 특정 값을 수정하려면 올바른 loc 구문을 사용하세요.
df.loc[df.C <= df.B, 'B':'E']
이러한 규칙을 준수하면 Pandas가 뷰나 복사본을 생성할 때 Python 스크립트 내에서 효율적인 데이터 조작이 보장됩니다.
위 내용은 Pandas는 언제 뷰와 복사본을 생성합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!