컬럼 혹은 인덱스를 기준으로 하는 데이터 정렬과 apply()를 통한 데이터에 함수를 적용하는 방법을 알아봅시다.
인덱스와 컬럼을 기준으로 데이터를 정렬하면, 더 편하게 데이터를 확인할 수 있습니다.
import pandas as pd
import numpy as np
data = {
'이름' : ['유재석', '박명수', '정준하', '노홍철', '정형돈', '하하'],
'지역' : ['서울', '부산', '부산', '서울', '서울', '서울'],
'나이' : [19, 23, 20, 25, 18, 21],
'국어점수' : [86, 90, 80, 65, 50, 60],
'수학점수' : [86, 100, 66, 70, 40, 80],
'코딩' : ['Python', 'Java', np.nan, 'Javascript', 'PYTHON', np.nan]
}
df = pd.DataFrame(data, index=['1번', '2번', '3번', '4번', '5번', '6번'])
df.index.name = '번호'
sort_index()
메서드를 통해 인덱스를 기준으로 자료를 정렬해봅시다. ascending 옵션을 조절하지 않으면 오름차순 정렬이 default입니다. 또한 inplace=True
옵션을 통해 변경사항을 고정할 수 있습니다.
내림차순 정렬을 하고싶다면, 옵션에 ascending=False
를 지정할 수 있습니다.
#오름차순 정렬
df.sort_index()
#내림차순 정렬
df.sort_index(ascending=False)
sort_values()
메서드를 통해 컬럼을 기준으로 자료를 정렬할 수 있습니다. ascending 옵션을 조절하지 않으면 오름차순 정렬이 default입니다. 또한 inplace=True
옵션을 통해 변경사항을 고정할 수 있습니다.
#오름차순 정렬
df.sort_values('나이')
#내림차순 정렬
df.sort_values('나이', ascending=False)
컬럼 두가지를 기준으로 정렬할 수 있습니다. 첫번째 기준으로 정렬하되, 같을 경우 두번째의 기준을 사용합니다.
df.sort_values(['지역', '국어점수'])
오름차순과 내림차순을 각각 지정하는 것도 가능합니다.
#지역은 오름차순, 국어점수는 내림차순으로
df.sort_values(['지역', '국어점수'], ascending=[True, False])
하나의 데이터를 정렬하여 보고싶다면, 특정 컬럼을 시리즈로 불러와 정렬할 수도 있습니다.
df['수학점수'].sort_values()
데이터 전처리 과정에서 특정 열이나 행을 변환해야 할 때가 있습니다. apply() 함수를 데이터를 적용해봅시다.
'나이' 열에 정수로 적힌 자료들을 '19살'처럼 출력하고 싶다면, 함수를 적용할 수 있습니다. 나이 뒤에 문자열 '살'을 붙이는 함수를 만들고, apply()를 통해 적용하면 됩니다.
def add_s(age):
return str(age) + '살'
df['나이'] = df['나이'].apply(add_s)
df
상단의 코드는 데이터의 '나이' 컬럼에 함수를 적용하고, 그 결과를 다시 df['나이']에 바인딩해줌으로써 새로운 데이터프레임을 만듭니다.