데이터프레임을 다루다보면 필요없는 행이나 열을 제거해야 되는 경우가 생깁니다.

이 경우 사용할 라이브러리 문법을 알아보죠.

 

우선 데이터프레임을 생성합니다.

df = pd.DataFrame({

    'a': [4, 5, 6],
    'b': [7, 8, 9],
    'c': [10, 11, 12]},
    index = [1, 2, 3]
)

크게 삭제할 부분은 행 or 열 일것입니다.

이는 단순하게 하나일수도 여러개일 수도 있습니다.

 

행과 열을 나누는 기준은 아래의 경우 중 하나를 택합니다.

1. axis=0 or axis=1 (행이나 열을 선택해줍니다.)

2. index=[], columns=[] 로 반환합니다.

 

예를 들어서 행의 1, 2 인덱스를 드랍하고자 합니다.

그러면 아래와 같이 두가지 방법으로 가능합니다.

# 1번 방법
df.drop([1, 2], axis=0)

# 2번 방법
df.drop(index = [1, 2])

물론 inplace=True를 해주지 않으면 데이터프레임이 변경되지는 않습니다.

 

다음으로 열을 바꿔볼까요

위와 똑같은 원리입니다.

이번에는 하나의 컬럼만 드랍해봅시다. 

'c'열을 드랍할게요.

# 1번 방법
df.drop(['c'], axis=1)

# 2번 방법
df.drop(columns = ['c'])

둘 다 동일한 결과가 나옵니다. 

데이터프레임에 적용하고자 하면 inplace=True 파라미터를 추가합니다.

 

요약

df.drop() 메소드를 이용하여 행이나 열을 제거할 수 있다.

axis를 통해서 행, 열을 구분한다(디폴트는 행 axis=0 이다.)

혹은 index = [], column = [] 을 통해서 구분하기도 한다.

둘 중 어느방법이든지 상관없다.

인덱스 정렬과 관련된 내용으로는 크게 두가지입니다.

인덱스를 순서에 따라 정렬하는 방법과, 인덱스를 순서대로 재설정 하는 방법입니다.

 

# 데이터프레임 생성
# 라이브러리는 구동되었다고 전제
df = pd.DataFrame({

    'a': [4, 5, 6],
    'b': [7, 8, 9],
    'c': [10, 11, 12]},
    index = [3, 2, 1]
)

df

인덱스 순서가 조금 이상해 보입니다.

오름차순 순서대로 정렬을 하고 싶다고 하면 우리는 sort_values와 비슷하게 index에 적용해보면 됩니다.

sort_index()처럼요.

해당 함수의 파라미터는 크게 세가지만 알면 됩니다.

1.행 인덱스인지 열 인덱스인지 (axis=0, axis=1) - 행 인덱스인 axis=0이 디폴트값입니다.

2.오름차순인지 내림차순인지 (ascending=True인 오름차순이 기본값입니다. False는 내림차순)

3.inplace=True (기존 데이터프레임에 적용하는 파라미터)

 

sort_values()를 하면 어떤 컬럼에 정렬하라는지 지정해줘야 됩니다.

그러나 인덱스는 unique한 값이기 때문에 단일 행 혹은 열에 대해서만 적용됩니다.

따라서 두가지의 인자를 입력할 필요가 없죠.

대신 앞에서 설명한대로 옵션(파라미터)는 조작할 수 있습니다.

df.sort_index()

sort_index()

인덱스가 정렬되었음을 볼 수 있습니다.

물론 값들의 순서도 인덱스에 붙어서 이동하기 때문에 전체적으로 행이 섞임을 알 수 있습니다.

 

나는 모든 값은 그대로 두고 인덱스값만을 바꾸겠다 할 경우에는?

다음 방법을 사용하면 됩니다.

(drop=True를 반환해주지 않으면 기존의 index가 컬럼으로 추가됩니다.)

df.reset_index(drop=True)

 

요약

인덱스를 정렬하는 방법은 크게 2가지가 있다.

1. 해당 인덱스를 순서대로 정렬하는 방법(값도 같이 움직임) - df.sort_index()

2. 인덱스를 초기화 해버리는 방법(값은 고정) - df.reset_index()  

+ Recent posts