※ 이 글을 쓰는 사람은 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의 경우 정 열을 통째로 수정하는게 아닌 열의 각 요소들을 수정하는 것이다. 아래 참고 링크 기재
-. 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
'코딩 > 데이터분석' 카테고리의 다른 글
[Python/파이썬] Numpy 기초 1편 : Array 생성 및 인덱싱,슬라이싱 (0) | 2021.06.29 |
---|---|
[Python/파이썬] Pandas 기초 정리 : 원소 바꾸기, dropna(), fillna() (0) | 2021.04.13 |
[Python/파이썬] Pandas 기초 정리 : Dataframe 행, 열 추가 방법 (0) | 2021.04.05 |
[Python/파이썬] Pandas 기초 정리 : Dataframe 내부 데이터 조회 방법 (0) | 2021.04.03 |
[Python/파이썬] Pandas 기초 정리 : Series, Dataframe 개념 정리 (2) | 2021.03.31 |