가끔가다 데이터프레임에서 컬럼 이름을 변경해야 하는 경우가 있습니다.

 

여기서는 크게 두가지의 경우를 살펴볼 것입니다.

feature(열)의 크기가 작다면 둘 중 어느방법을 사용해도 상관 없습니다

다만, 특정 컬럼만 매칭해서 바꾸고 싶은 경우에는 rename()메소드로 컬럼 인자를 반환해줘야 합니다.

설명보다는 예시로 들어가봅시다.

 

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

df = pd.DataFrame({

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

df

컬럼명들을 'A', 'B', 'C'로 바꾸고 싶다고 가정하면,

크게 두가지 방법이 있습니다.

1. df.columns = [] 리스트 형태로 반환하거나, 

2, df.rename(columns={}) 딕트 형태로 반환하는 방법입니다.

 

차이점이 있습니다.

리스트 형태는 반드시 모든 피처들을 입력해줘야 됩니다.

즉, 열의 피처 개수만큼 리스트 인자가 들어가 있어야 된다는 거죠.

하나라도 부족하면 에러가 뜨게 됩니다.

df.columns = ['A', 'B', 'C']

성공적으로 바뀌었습니다. 

 

바뀌기 전의 데이터프레임에서

df.columns의 리스트 인자를 피처 개수 3개보다 적게 입력해주면 어떻게 될까요?

 

새롭게 데이터 프레임을 초기화 합니다.

df = pd.DataFrame({

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

리스트 인자를 기존 피처개수 3개보다 적은 2개로 입력해보겠습니다.

df.columns = ['A', 'B']

하단 에러를 보세요.

에러를 보시면. "열은 3개인데, 너는 2개만 값을 입력했다" 라는 에러메시지가 뜹니다.

즉 df.columns = [] 방식으로는 반드시 컬럼의 개수를 맞춰줘야 됩니다.

 

그러면 두번째 방법을 살펴보죠.

df.rename(columns={})

rename의 파라미터인 columns를 딕트 형태로 반환하는 겁니다.

여기서 키 값은 기존의 컬럼이름이고, 밸류 값은 새롭게 지정하고 싶은 이름입니다.

다행히도 이 방법은 반드시 3개의 인자를 모두 반환할 필요가 없습니다.

키 값을 지정해준 부분만 바꿔주기 때문입니다.

(기존 df에 적용시키기 위해 inplace=True 인자를 넣어줍시다.)

df.rename(columns = {'A':'에이', 'B':'비', 'C':'씨'}, inplace=True)

모든 컬럼의 이름이 바뀌었네요.

그러면 'C' 컬럼은 바꾸지 않도록 하기 위해서 왼쪽부터 두 열만 바꿔봅시다.

df.rename(columns = {'A':'에이', 'B':'비'}, inplace=True)

아까 리스트 형태로는 반드시 모든 컬럼의 갯수만큼 반환해야 했는데,

딕트 형태로 파라미터를 반환하는 rename() 함수는 필요한 피처의 이름만 바꿀 수 있어서 좋네요.

 

요약

컬럼 네임을 바꾸는 방법이 두가지가 있다.

 

1. df.columns = [] 형태로 리스트를 반환하는 방법

이것은 반드시 리스트의 len()과, df의 열의 길이가 동일해야 한다는 점.

 

2. df.rename(columns={}) 형태로 딕트를 반환하는 방법

이것은 모든 열을 다루지 않고, 필요한 열만 키 값으로 지정해서 바꿔줄 수 있다.

 

 

파이썬 판다스 데이터프레임 정렬 방법 sort_values()

 

1. 데이터프레임에 대해 정렬하는 방법(특정 컬럼 기준으로)

2. 시리즈로 정렬하는 방법(하나의 열에 대해)

3. 내림차순으로 바꾸는 방법

4. 그리고 여러 컬럼을 리스트로 묶는 방법 

 


 

시작합니다.

라이브러리를 호출하고, 데이터프레임을 생성합니다.

import pandas as pd

df = pd.DataFrame([
    [16, 7, 10],
    [15, 8, 11],
    [14, 9, 12]],
    columns = ['a', 'b', 'c'],
    index = [1, 2, 3]
)
df

 

df

1. 컬럼 'a'를 기준으로 데이터프레임을 정렬해봅시다.

# 프레임의 정렬
df.sort_values('a')

결과가 데이터프레임으로 나타난다는 것이 보이시나요?

이 점이 중요합니다.

2. 컬럼 'a'를 기준으로 시리즈를 정렬해봅시다.

# 시리즈의 정렬
df['a'].sort_values()

결과창이 시리즈로 나타난다는게 보이시나요?

결국 df를 호출한 뒤 ('a')라는 인자에 대해 정렬을 원한다면 데이터프레임으로 나타나고,

df['a']자체를 호출한 뒤 정렬하면 시리즈로 나타난다는 점을 인지하셔야 됩니다.

 

 

3번째로는 정렬 차순의 설명입니다.

sort_values는 오름차순, 내림차순의 파라미터가 있습니다.

해당 파라미터는 ascending으로 지정되어 있는데 기본 디폴트 값은 True로 되어있습니다. 즉, 오름차순이라는 것이죠.

위의 예시에서 ascending = False로 지정하고 내림차순으로 살펴보겠습니다.

# 프레임의 정렬, 내림차순
df.sort_values('a', ascending=False)

컬럼 'a'의 결과가 14, 15, 16순이 아니라 그 반대인 것을 볼 수 있습니다.

 

4. 마지막으로는 여러 컬럼을 기준으로 정렬 순서를 정할 수 있다는 겁니다.

column 인자를 리스트로 반환하면 됩니다.

# 프레임의 정렬, 리스트로 반환
df.sort_values(['b','c'], ascending=False)

'b', 'c' 컬럼에 대해서 내림차순으로 정렬된게 보이시나요?

 

이렇게 4가지를 살펴보았습니다.

1. 데이터프레임에 대해 정렬하는 방법(특정 컬럼 기준으로)

2. 시리즈로 정렬하는 방법(하나의 열에 대해)

3. 내림차순으로 바꾸는 방법

4. 그리고 여러 컬럼을 리스트로 묶는 방법 

+ Recent posts