copy()의 목적
245
작성한 질문수 14
df_last_prepare = df_last.loc[df_last["전용면적"] == "전체", cols].copy()
----------------------------------------------------
여기서 copy()를 사용하면 df_last_prepare의 값이 변하더라도, df_last_prepare에 영향을 주지 않는다고 하셨는데, 정확히 그게 무슨의미인지 이해가 잘 가지 않아서요.
혹시 추가 설명 부탁드려도 될까요~? 미리 답변 감사드립니다.
답변 1
2
안녕하세요.
질문 주신 내용을 어떻게 설명할까 고민하다가 영상으로 만들어 봤습니다.
아래 영상을 참고해 주세요. => https://youtu.be/Bjsv-ip4Ruk
import pandas as pd
# 데이터프레임에 a 라는 컬럼을 생성합니다.
df = pd.DataFrame({"a": range(5)})
df
# 0, 1번 인덱스값만 추출해서 df2 에 사본을 만듭니다.
df2 = df.loc[0:1]
df2
# df, df2는 다른 id값을 갖고 있습니다.
print(id(df))
print(id(df2))
df2
# df2의 a컬럼의 값을 [4, 5] 로 변경합니다.
# 데이터 프레임의 일부의 사본을 생성해 올 때 copy()를 사용하지 않고
# 사본을 생성하게 되면 아래와 같은 경고메시지가 발생합니다.
df2["a"] = [4, 5]
df2
# 0 번 인덱스의 a 컬럼에 다른 값을 넣으려고 할때도 아래의 경고 메시지가 출력됩니다.
df2.loc[0, "a"] = 7
df2
# 그리고 df2의 값을 변경해 주었는데 df의 0,1 번 인덱스 값이 변경된 것을 확인할 수 있습니다.
df
# 그럼 이번에는 copy()를 통해 df2를 df3에 사본을 생성합니다.
# pandas copy의 기본값은 df.copy(deep: bool = True) 깊은복사 입니다.
df3 = df[:3].copy()
df3
# df, df2, df3는 모두 다른 id값을 가집니다.
print(id(df))
print(id(df2))
print(id(df3))
# df3의 a컬럼의 값을 변경합니다.
df3["a"] = [-2, -3, -4]
df3
# df3의 값을 변경해도 원본 df의 값은 마지막 상태를 유지하고 있습니다.
# df3의 변경값이 df에 반영되지 않았습니다.
df
# .copy()를 통해 깊은 복사를 해주게 되면 사본이 원본을 바라보지 않습니다.
# 따라서 사본을 생성할 때 .copy()를 사용하면 원본값에 영향을 주지 않게 되고
# 값을 변경할 때도 경고메시지가 출력되지 않습니다.
패키지 설치 에러 ydata-profiling
0
120
2
자세한 설명 부탁드려요 ㅜ
0
176
2
seaborn 라이브러리 호출하였으나 그래프가 안 그려져요
0
286
2
value_counts와 count 차이
0
341
2
안녕하세요 데이터 최신과 관련해서 문의드립니다.
0
205
3
scatterplot질문
0
122
1
강의 화면이 안나옵니다
0
164
2
4분12초 2013년부터 데이터가 없으면 어떻게하나요?..
0
188
2
에러 메시지
1
303
2
그래프 색이 동일하게 나옵니다.
0
308
2
시각화 라이브러리 비교
0
382
2
주피터 노트북 설치
0
390
1
2. 상가 기술통계 아웃풋 자료에서 오류가 납니다
0
226
1
14. distplot g = sns.FacetGrid(df_last, row="지역명", height=1.7, aspect=4) g.map(sns.distplot, "평당분양가격", hist=False, rug=True); 오류
0
178
1
group by agg function failed 에러
0
687
2
빈도수가 1000개 이상인 데이터를 따로 담을 때 코드 질문 있습니다.
0
288
2
주피터 노트북 실행 했는데 앞에 *가 생기고 결과가 나오지 않아요
0
363
3
get_string함수에서 문자 'nan'
0
200
1
seaborn X축 시작 지점 조정 질의의 건
0
213
1
14강 distplot 질의
0
289
1
nbextension 설치 및 셋팅 후 적용이 안되는 이슈
0
477
1
corr = df.corr() 입력시 오류
1
372
1
keyword grid_b is not recognized
0
334
1
%ls data 매직커맨드 사용시 한글 깨짐
0
292
1





