일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 2164 카드2
- flask
- Selenium
- clustering
- colab runtime
- 파이썬
- 알고리즘
- 크롤링
- python buildpacks
- 플라스크
- 셀레니움
- to shp
- Merge Repositories
- string to list
- NLP
- 해시태그
- Python
- convert to shp
- 인스타그램
- 혁신성장부문
- 웹페이지
- geoDataFrame
- 백준
- 코랩 런타임
- kmeans
- 괄호 문제
- Crawling
- plotly dash
- geopandas
- Chat-GPT
Archives
- Today
- Total
코딩코딩코딩
Pandas DataFrame 사용 시 SettingWithCopyWarning 발생 원인 본문
SettingWithCopyWarning 에러는 원천 DataFrame의 일부로 구성된 파생 DataFrame에 변경을 가하는 경우 발생합니다.
기본적으로 Pandas는 원천 DataFrame을 생성할 때에만 메모리를 할당합니다
이로부터 파생되는 DataFrame은 원천 DataFrame을 이미 적재된 메모리에 접근케 하며 이를 통해 메모리를 절약합니다.
다만 Pandas에서는 파생 DataFrame에 수정을 가하는 것을 권장하지 않습니다.
따라서 copy() 메서드를 통해서 파생 DataFrame에 독립적인 메모리를 부여한 뒤 여기에 수정을 가하도록 유도합니다.
즉, SettintWithCopyWarning은 원천 DataFrame의 일부를 수정하려고 할 때 발생하며, 이 문제는 파생 DataFrame을 copy() 메서드를 통해 생성함으로써 별도의 메모리 공간을 부여하는 것으로 해결할 수 있습니다.
아래에 간단한 예제를 준비했습니다.
output 이라는 가상의 csv 파일이 있다고 가정합니다.
df = pd.read_csv("output.csv")
이 DataFrame은 10개의 행과 [Number, String, page] 세 개의 열로 이루어짐
### 에러 발생
Col_1 = df["Number"]
for i in range(len(Col_1)):
processed = Col_1[i] + 1
Col_1 = processed
### 에러 발생하지 않음
Col_1 = df["Number"].copy()
for i in range(len(Col_1)):
processed = Col_1[i] + 1
Col_1 = processed
copy 메서드에 대한 설명은 아래 글을 참고하시면 됩니다.
https://hansuho113.tistory.com/6?category=914287
참고)
https://emilkwak.github.io/pandas-dataframe-settingwithcopywarning
'파이썬 > 문법' 카테고리의 다른 글
파이썬 문자열 배열로 반환 (python string to list) (0) | 2021.04.26 |
---|---|
파이썬 튜플 리스트 정렬 (python tuple sort) (0) | 2021.04.12 |
파이썬(python) sys.stdin.readline 사용, input() (0) | 2021.04.10 |
pyinstaller를 통해 exe파일 만들기 (1) | 2020.07.30 |
파이썬 list copy (1) | 2020.07.21 |
Comments