-
Pandas DataFrame_.copy() 카피 메소드, 데이터프레임 중간에 행 추가 삽입▶파공's 취미 생활/▷파이썬 공부 2021. 7. 17. 14:49
안녕하세요
파이어(F.I.R.E.)를 꿈꾸는 공룡
'파공' 입니다.
오늘은 Pandas 판다스 DataFrame 데이터프레임의 .copy() 메소드를 소개해 드리고 이 메서드가 굳이 왜 필요한지 말씀드리겠습니다.
그리고 아래 링크의 글에서 데이터프레임에 행 추가, 삽입 등등 여러 가지 방법을 말씀드렸었는데, 데이터프레임의 중간에 행을 추가 삽입하는 방법은 말씀을 안 드렸었더라구요. 그래서 그것까지 같이 말씀드리려고 합니다!
(아래 링크 글도 꼭 같이 참고해주세요~^^)
Pandas DataFrame 특정 로우(행) 호출, 수정, 추가, 삭제 하는 법
Pandas DataFrame 특정 로우(행) 호출, 수정, 추가, 삭제 하는 법
안녕하세요 파이어(F.I.R.E.)를 꿈꾸는 공룡 '파공' 입니다. 오늘은 Pandas 판다스 DataFrame 데이터프레임의 특정 로우(행)을 호출, 수정, 추가, 삭제 하는 법에 대해서 말씀드리겠습니다! 1. 샘플 데이
firedino.tistory.com
1. 샘플 데이터 프레임 생성하기
우선은 여느 때와 같이, Pandas 라이브러리를 import 하고 샘플로 사용할 간단한 데이터프레임을 생성하겠습니다.
(데이터프레임을 생성하는 자세한 방법은 아래 링크의 그을 참고해주세요^^)
Pandas DataFrame 생성 만들기 (+ Numpy 행렬 이용하는 법)
Pandas DataFrame 생성 만들기 (+ Numpy 행렬 이용하는법)
안녕하세요 파이어(F.I.R.E.)를 꿈꾸는 공룡 '파공' 입니다. 오늘은 Pandas 라이브러리의 기본이 되는 DataFrame을 생성하는 방법, 만드는 방법에 대해서 알아보겠습니다. 오늘은 Numpy도 이용할 예정이
firedino.tistory.com
<코드>
df_1 = pd.DataFrame({'c1':['a','b','c'], 'c2':[1,2,3]})df_1cs <실행화면>
2. DataFrame 데이터프레임 .copy() 메서드가 필요한 이유!!!
- 원본 변수의 데이터프레임을 보존하면서, 그 데이터프레임을 복사하여 다른 작업을 할 때 필요합니다.
- 원본 변수의 데이터프레임을 새로운 변수에 그냥 대입해줘서는 원본 데이터프레임이 보존이 안됩니다.
직접 실습을 해보겠습니다.
2-1. 새로운 변수에 기존의 데이터프레임 그냥 대입
<코드>
df_2 변수에 df_1 데이터 프레임이 잘 대입되었죠.
이제 df_2를 좀 바꿔보겠습니다.
<코드>
df_2.loc[1] = ['modi','fy'] #df_1은 그대로 두고, df_2만 바꿔줬음df_2cs <실행화면>
df_2 데이터프레임의 두 번째 행 (인덱스 1 행) 이 바뀐 것을 보실 수 있죠.
그렇다면, df_1을 한 번 확인해볼까요?
df_1은 우리가 바꾼 적이 없지만 df_2처럼 바뀌어 버렸네요....!! 이것이 바로 .copy() 메서드를 사용해야 하는 이유입니다!
그렇다면, 이번엔 .copy() 메서드를 사용해 보겠습니다!
2-2. 새로운 변수에 기존의 데이터프레임을 .copy() 메서드를 사용하여 대입
<코드>
df_3 = df_1.copy() # df_3에 df_1을 카피하여 넣어줍니다.df_3cs <실행화면>
df_1을 새로 정의하지 않고 사용하던거를 그대로 가져왔기 때문에 df_3 데이터프레임이 위 그림과 같은 상태입니다.
이제 df_3을 좀 바꿔보겠습니다!
<코드>
df_3 데이터프레임의 두 번째 행 (인덱스 1 행) 이 'modi', 'fy' 에서 'change', 'change'로 바뀌었음을 확인할 수 있습니다.
이제 df_1을 확인해 보겠습니다.
아까와는 다르게 이번엔 df_1의 두 번째 행이 'modi', 'fy'로 그대로 있습니다!
이제 왜 .copy() 메서드가 필요하고, 언제 이 메서드를 사용하면 될지 감이 오셨을 거라고 생각합니다. 카피 메서드를 사용하는 이유 다시 한번 말씀드려보고 다음 주제로 넘어가겠습니다.
- 원본 변수의 데이터프레임을 보존하면서, 그 데이터프레임을 복사하여 다른 작업을 할 때 필요합니다.
- 원본 변수의 데이터프레임을 새로운 변수에 그냥 대입해줘서는 원본 데이터프레임이 보존이 안됩니다.
3. DataFrame 데이터프레임 중간에 행 삽입·추가 하기
이번에는 데이터프레임의 중간에 행을 삽입 추가하는 방법을 말씀드려보려고 합니다.
df_1을 다시 정의하면서 시작하겠습니다.
<코드>
df_1 = pd.DataFrame({'c1':['a','b','c'], 'c2':[1,2,3]})df_1cs <실행화면>
이제 우리는 인덱스 1 행과 인덱스 2행 사이에 새로운 행을 추가해보도록 하겠습니다. 추후에 인덱스를 정렬하는 .sort_index() 메서드를 이용할 것이기 때문에, 인덱스를 정렬 했을 때 인덱스 1과 2 사이에 위치 할 수 있도록 인덱스 1.5를 사용하여 행을 우선 추가해보도록 하겠습니다.
<코드>
df_1.loc[1.5] = ['new','row']df_1cs <실행화면>
이제 아까 말씀드렸던 .sort_index() 메서드를 이용해서 인덱스를 기준으로 행들을 정렬해줍니다.
<코드>
#인덱스를 기준으로 정렬해줍니다.df_1 = df_1.sort_index()df_1cs <실행화면>
우리가 추가했던 행이 우리가 원하는 위치로 이동했음을 확인할 수 있습니다.
참고로, 지금 여기서 .sort_index() 메서드는 인덱스 기준 오름차순으로 행들을 정렬해줬는데요. .sort_index()를 이용해서 내림차순으로 행들을 정렬해 줄 수도있습니다. .sort_index() 메서드의 파라미터로 'ascending'이 있습니다. 이 값이 기본적으로 True로 설정되어있기 때문에, 내림차순 정렬을 원하실 때는 .sort_index(ascending=False) 와 같이 파라미터와 값을 추가해주시면 됩니다.
다시 본론으로 돌아와서, 우리가 추가한 행이 원하는 위치에 잘 도착했으나, 인덱스 값들이 정수가 아니라는 점이 좀 신경쓰입니다. 인덱스 값들을 정수로 바꿔주면 더 깔끔해질 것 같으니 인덱스를 수정해 보겠습니다.
(데이터프레임의 인덱스를 수정하는 다양한 방법들은 아래 링크 글 참고해주세요^^)
Pandas DataFrame Index 판다스 데이터프레임 인덱스 수정하는 방법
Pandas DataFrame Index 판다스 데이터프레임 인덱스 수정
안녕하세요 파이어(F.I.R.E.)를 꿈꾸는 공룡 '파공' 입니다. 오늘은 Pandas DataFrame(판다스 데이터프레임)의 인덱스 수정 방법에 대해서 다양하게 보여드리겠습니다! ● 샘플 데이터 프레임 생성하
firedino.tistory.com
<코드>
df_1 = df_1.reset_index(drop = True) #인덱스를 아예 초기화 시켜버림df_1cs <실행화면>
이제 데이터프레임의 인덱스가 이쁘게 정수로 리셋 되었네요.
오늘은 Pandas DataFrame (판다스 데이터프레임)을 카피하는 .copy()메서드를 소개해드리고, 이 메서드를 왜 사용해야 하는지, 언제 사용해야하는지 말씀드렸습니다.
그리고나서 추가적으로 데이터프레임의 중간에 행을 추가 삽입하는 방법까지 말씀을 드려봤습니다.
파이썬 특히 판다스를 공부하시는 분들께 조금이나마 도움이 되면 좋겠습니다.^^
오늘도 글 읽어 주셔서 감사합니다!
Look Rich or Be Rich
현명한 선택을 응원합니다.
-파공-
'▶파공's 취미 생활 > ▷파이썬 공부' 카테고리의 다른 글
Pandas 판다스 DataFrame 원하는 데이터 특정 셀 추출, 변경(수정) (0) 2022.08.28 Pandas DataFrame csv파일 엑셀파일 불러오기 읽기, utf-8 에러 해결법 (0) 2021.07.20 Pandas DataFrame Index 판다스 데이터프레임 인덱스 수정 (0) 2021.07.13 파이썬 포맷팅 Format (feat. %, {}, f-string) 알아보기 (0) 2021.03.09 Pandas DataFrame 특정 로우(행) 호출, 수정, 추가, 삭제 하는 법 (4) 2021.01.20