본문 바로가기

코딩/데이터분석

[Python/파이썬] Pandas 기초 정리 : Dataframe 행, 열 삭제하기(drop 함수)

반응형

※ 이 글을 쓰는 사람은 SW 비전공자입니다.

※ 개인 공부를 위해 정리하는 글이며, 작성한 코드들은 효율성, 깔끔함(?) 등과는 거리가 멀 수 있습니다.

 

1편 : 2021.03.31 - [코딩/Python] - [Python/파이썬] Pandas 기초 정리 : Series, Dataframe 개념 정리

2편 : 2021.04.01 - [코딩/Python] - [Python/파이썬] Pandas 기초 정리 : 엑셀 파일(.xlsx) Dataframe으로 만들기

3편 : 2021.04.03 - [코딩/Python] - [Python/파이썬] Pandas 기초 정리 : Dataframe 내부 데이터 조회 방법

4편 : 2021.04.05 - [코딩/Python] - [Python/파이썬] Pandas 기초 정리 : Dataframe 행, 열 추가 방법

5편 : 2021.04.11 - [코딩/Python] - [Python/파이썬] Pandas 기초 정리 : Dataframe 행, 열 삭제하기(drop 함수)

6편 : 2021.04.13 - [코딩/Python] - [Python/파이썬] Pandas 기초 정리 : 원소바꾸기, dropna(), fillna()

7편 : 2021.04.24 - [코딩/Python] - [Python/파이썬] Pandas Dataframe 결합 : Concat

8편 : 2021.04.25 - [코딩/Python] - [Python/파이썬] Pandas Dataframe 결합 : Merge


1) Dataframe의 행, 열 이름 변경

 

2) Dataframe 조회

   -. 인덱싱

   -. 슬라이싱

   -. 열 조회

   -. 원소 조회

 

3) 행, 열 추가하기

 

4) 행, 열 삭제하기(drop)

 

4) 원소값 바꾸기

 

5) 결측치(NaN) 관련

 

  이번 편에서는 Dataframe의 행과 열을 삭제하는 방법에 대해 포스팅한다. Pandas에서는 drop( ) 이라는 함수를 통해 행, 열을 삭제할 수 있다. dataframe은 이전 편까지 활용했던 엑셀 파일을 활용한다.

 

<코드>

import pandas as pd

#dataframe 생성(엑셀 파일 통해 생성)
df = pd.read_excel("df_test.xlsx", engine="openpyxl")
print(df)

 

   이름   국어  영어  수학
0  YB  100  90  80
1  SW   70  60  50
2  EJ   40  30  20
3  HJ   10   5   1

 

 

1. Dataframe의 행 삭제

 

  drop( ) 함수 사용법은 간단하다. 행인 경우 index를 통해 접근하거나 특정 조건을 통해 삭제할 수 있다.

 

 

1) index 통해 삭제하는 방법

 

 

<코드>

df2 = df.drop(index=0, axis=0)
print(df2)

 

   이름  국어  영어  수학
1  SW  70  60  50
2  EJ  40  30  20
3  HJ  10   5   1

 

-. index=0인 행을 삭제한다.

-. axis=0은 행을 의미한다. 

 

-. 여러 인덱스를 한꺼번에 삭제하고 싶다면 아래와 같이 입력한다.

   1,2,3번째 인덱스를 삭제(index=0만 남김)

-. 아래 코드는 행을 삭제한 결과를 'df2'라는 변수에 dataframe을 재할당했다.

 

<코드>

df2 = df.drop(index=[1,2,3])
print(df2)

 

   이름   국어  영어  수학
0  YB  100  90  80

 

 

 

 

 

-. 만약 원본에서 바로 바꾸고 싶다면 inplace=True를 아래처럼 파라미터로 입력해야 한다.

 

 

<코드>

df.drop(index = [0,1], inplace=True)
print(df)

 

   이름  국어  영어  수학
2  EJ  40  30  20
3  HJ  10   5   1

※ 참고사항 : axis = 0 vs axis = 1

 

-. axis = 0은 dataframe 행 단위를 수정할 때 필요한 파라미터 값이다.

-. axis = 1은 dataframe 열 단위를 수정할 때 필요한 파라미터 값이다.

-. axis = 1의 경우 정 열을 통째로 수정하는게 아닌 열의 각 요소들을 수정하는 것이다. 아래 참고 링크 기재

    (참고링크 : m.blog.naver.com/PostView.nhn?blogId=tjdrud1323&logNo=221452985303&proxyReferer=https:%2F%2Fwww.google.com%2F)

 

axis = 0, axis=1 차이

 

-. drop( ) 함수에 index, column이라는 파라미터를 사용하지 않는다면 axis=0 또는 axis=1 파라미터값을 넣어줘야 한다.

   예를 들면 아래와 같은 경우를 말한다.

 

 

<코드>

df.drop(['이름','국어'], inplace=True)
print(df)

 

#에러 발생
KeyError: "['이름' '국어'] not found in axis"

 

-. KeyError가 발생하는 이유는 설정한 axis에서 '이름', '국어'라는 이름을 찾지 못했기 때문이다.

-. axis를 설정하지 않는 경우 기본값은 axis=0이다.

-. 따라서, 위 코드처럼 Column에 접근하려면 axis=1을 넣어줘야 한다.(index로 접근할 때는 axis=0은 생략 해도  됨. 

    (axis=0이 default 이기 때문)

 

 

<코드>

df.drop(['국어','영어'], axis=1, inplace=True)
print(df)

 

   이름  수학
0  YB  80
1  SW  50
2  EJ  20
3  HJ   1

 

2) 특정 조건을 통해 행을 삭제하는 방법

 

  지금까지 했던 방법은 drop( )을 활용한 방식이고 특정 조건을 만족하는 row(행)만 dataframe으로 생성하는 방법이 있다.(필터링) 아래와 같이 코드를 작성해보자. 조건에 만족하지 않는 행은 삭제된다.

 

 

<코드>

df3= df[df['이름'] == 'SW']
print(df3)

 

   이름  국어  영어  수학
1  SW  70  60  50

 

-. '이름' 열의 'SW'만 필터링하는 조건이다. 

-. 조건이므로 '비교연산자'를 사용해야 함을 주의하자.

 

 

 

2. Dataframe의 열 삭제

 

  열 삭제는 행 삭제의 파라미터인  index 를  columns으로 바꿔 사용하면 된다.

 

 

<코드>

df4 = df.drop(columns = ['국어', '영어'])
print(df4)

 

   이름  수학
0  YB  80
1  SW  50
2  EJ  20
3  HJ   1

 

-. column 중 '국어'  열과 '영어'  열을 삭제하는 코드이다. 

- columns이라는 파라미터를 사용하지 않는다면 위에 설명했듯이 axis=1 파라미터를 입력하면 된다.

 

 

<코드>

df5 = df.drop(['수학'], axis=1)
print(df5)

 

   이름   국어  영어
0  YB  100  90
1  SW   70  60
2  EJ   40  30
3  HJ   10   5
728x90