-
Pandas DataFrame 특정 로우(행) 호출, 수정, 추가, 삭제 하는 법▶파공's 취미 생활/▷파이썬 공부 2021. 1. 20. 22:55
안녕하세요
파이어(F.I.R.E.)를 꿈꾸는 공룡
'파공' 입니다.
오늘은 Pandas 판다스 DataFrame 데이터프레임의
특정 로우(행)을 호출, 수정, 추가, 삭제 하는 법에 대해서 말씀드리겠습니다!
1. 샘플 데이터 프레임 생성하기
우선 Pandas 라이브러리를 import 하고 샘플로 사용할 데이터프레임을 생성합니다.
(데이터프레임 생성하는 법은 아래 링크를 참고해주세요!)
2020/09/04 - [▶파공's 취미 생활/▷파이썬 공부] - Pandas DataFrame 생성 만들기 (+ Numpy 행렬 이용하는법)
<코드>
123import pandas as pddf_1 = pd.DataFrame({'c1':['a', 'b', 'c', 'd'],'c2':[0, 1, 2, 3]}, index = ['A','B','C','D'])df_1cs <실행 화면>
2. 특정 로우(행) 호출하기
Case 2_1. 특정한 하나의 행 호출하기-------------------
위에 만들어 놓은 데이터프레임(df_1)에서 내가 원하는 특정한 행만 호출해 보겠습니다.
특정한 하나의 행을 호출하면 시리즈 타입으로 데이터가 호출 됩니다.
.loc를 사용할 때는 호출하고자하는 행의 인덱스를 활용합니다.
<코드>
a = df_1.loc['C']print(a)type(a)cs <실행 화면>
.iloc를 사용할 때는 호출하고자하는 행이 몇 번째 행인지를 입력합니다.
1행은 0번째 행 이라는 점을 주의하셔야 합니다!
<코드>
Case 2_2. 한 번에 여러 행 호출하기 -------------------
한 번에 여러 행을 호출하면 데이터프레임 타입으로 호출이 됩니다. 또한, 슬라이싱을 이용해서 여러 행을 한 번에 호출 할 수 있습니다.
<코드>
df_1[1:4]cs <실행 화면>
iloc를 사용할 수도 있습니다.
<코드>
df_1.iloc[1:4]cs <실행 화면>
Case 2_3. 한 번에 여러 특정 행을 골라서 호출 하기------------------
.loc를 사용할 수도 있고
<코드>
.iloc를 사용할 수도 있습니다.
<코드>
df_1.iloc[[1,3]]cs <실행 화면>
3. 특정 조건에 해당하는 로우(행) 호출하기
연습할 때 사용할 데이터프레임을 다시 한 번 확인하고 가겠습니다.
위와 같은 df_1을 가지고 특정 조건에 해당하는 로우(행)들을 호출 하는 방법에 대해서 알아보겠습니다!
Case 3_1.불리언('True' or 'False')를 직접적으로 이용하기----------------
<코드>
df_1[[True,False,False,True]]cs <실행 화면>
True가 들어있는 순서에 맞게, 제일 첫번째 행과 마지막 행만 호출이 되었습니다.
Case 3_2. 불리언을 직접적으로 사용하지 않고 조건을 주는 방법----------
<코드>
c1_1 = df_1['c1'] >= 'b'df_1[c1_1]cs <실행 화면>
위 예시는 df_1 데이터프레임의 'c1'컬럼의 값을 호출하여 'b'보다 크거나 같은 행들만 추출해 낸 케이스 입니다.
이를 이해하기 위해선 데이터프레임의 특정 컬럼 추출하는 법을 아셔야 합니다.
데이터프레임의 특정 컬럼(열) 호출, 추가, 삭제하는 법이 궁금하신 분들은 아래 링크 참고해 주세요~!
2020/09/07 - [▶파공's 취미 생활/▷파이썬 공부] - Pandas DataFrame 특정 컬럼 열_호출 추가 삭제하기
이번에는 df_1 데이터프레임의 'c2'컬럼의 값을 호출하여 '3'보다 작은 행들만 추출해 보겠습니다.
<코드>
c2_1 = df_1['c2'] < 3df_1[c2_1]cs <실행화면>
그럼 이번에는 df_1 데이터프레임에서 'c1'컬럼의 값을 호출하여 'b'보다 크거나 같고, 'c2'컬럼의 값을 호출하여 '3'보다 작은 행들만 추출해 보겠습니다.
<코드>
df_1[c1_1&c2_1]cs <실행 화면>
4. 특정 로우(행) 수정하기
연습할 때 사용할 데이터프레임을 다시 한 번 확인하고 가겠습니다.
Case4_1. 특정 행 호출해서 수정하기-----------------
먼저 .loc 를 사용해보겠습니다.
<코드>
df_1.loc['B'] = ('zzz',999)df_1cs <실행 화면>
.iloc를 사용해 보겠습니다.
<코드>
df_1.iloc[2] = ('zzz',999)df_1cs <실행 화면>
Case4_2. for 문 사용하여 여러 행 수정하기-------
<코드>
# for 문을 사용해서 특정 행들만 수정할 수도 있음for i in range(1,4):df_1.iloc[i] = ('kkkk',10101010)df_1cs <실행 화면>
실행 화면을 보시면 2번째 행부터 4번째 행까지 값이 바뀐 것을 확인 할 수 있습니다. for문을 사용하여 i 값이 1, 2, 3이 대입 되었기 때문입니다.
5. 데이터프레임에 행 추가하기
df_1을 다시 원래 상태로 만들어 놓고 시작해볼까요?
Case 5_1. 새로운 인덱스를 사용해서 행 추가하기------------------------
<코드>
#원하는 인덱스를 써서 행 추가df_1.loc['N'] = ['n',5]df_1cs <실행 화면>
df_1에 인덱스가 'N'인 행이 추가 되었습니다.
Case 5_2. append를 사용해서 행 추가하기------------------------
<코드>
# append 이용하기df_2 = df_1.iloc[0]print(df_2) #이렇게 추가하고 싶은 데이터를 따로 만들고df_3 = df_1.append(df_2) #기존의 데이터프레임에 append로 추가df_3cs <실행 화면>
먼저 df_2를 df_1에서 첫번째 행을 추출하여 만들어 놓습니다. print(df_2)를 참고해 주세요. 그 이후에, 기존의 데이터프레임 df_1에 새로 만든 df_2를 append로 추가하여 df_3을 만들어 낸 것입니다. 만약에 append를 사용할 때, 기존 데이터프레임과 추가할 데이터 프레임의 컬럼 명이 동일 하지 않다면 아래와 같이 append 됩니다.
위 그림에서 보시는 것 처럼, 서로 갖고 있지 않은 컬럼에 대해서는 'NaN' 처리를 하면서 행이 추가 됩니다.
6. 데이터프레임 행 삭제하기
이번에도 df_1을 다시 원래 상태로 만들어 놓고 시작해보겠습니다!
Case 6_1. 한 번에 하나의 행 삭제하기------------------------
<코드>
df_111 = df_1.drop(index='C')df_111cs <실행 화면>
Case 6_2. 한 번에 여러 행 삭제하기------------------------
<코드>
df_112 = df_1.drop(index = ['B','D'])df_112cs <실행 화면>
오늘은 Pandas DataFrame (판다스 데이터프레임)을 다루는 방법들 중에서 행을 호출하고, 수정하고, 추가하고, 삭제하는 방법을 말씀드렸습니다. 판다스 데이터프레임은 여러 데이터를 가지고 머신러닝이나 딥러닝을 하기 위한 전처리 과정에서 많이 사용되니 데이터프레임 다루는 법을 잘 익혀 두시면 큰 도움이 되실 것 같습니다.
※추가적으로, 파이썬과 판다스 관련한 아래 링크들도 참고해주세요~^^
- 파이썬 문자열 포맷팅 Format (feat. %, {}, f-string) 알아보기
- Pandas DataFrame 판다스 데이터프레임 인덱스 수정하는 다양한 방법들
오늘도 글 읽어 주셔서 감사합니다!
Look Rich or Be Rich
현명한 선택을 응원합니다.
-파공-
'▶파공's 취미 생활 > ▷파이썬 공부' 카테고리의 다른 글
Pandas DataFrame Index 판다스 데이터프레임 인덱스 수정 (0) 2021.07.13 파이썬 포맷팅 Format (feat. %, {}, f-string) 알아보기 (0) 2021.03.09 Pandas DataFrame 특정 컬럼 열_호출 추가 삭제하기 (0) 2020.09.07 Pandas DataFrame 생성 만들기 (+ Numpy 행렬 이용하는법) (2) 2020.09.04 주피터 노트북 시작 폴더 위치 변경_Jupyter Notebook (2) 2020.08.25