-
[python] 파이썬을 이용한 빅 데이터 실습 10 - 데이터 정렬Languages/python 2021. 11. 1. 15:09반응형
정렬
어떤 값을 기준으로 어떤 값의 순서를 매기는 행위
sort_values()
데이터의 값을 기준으로 정렬하는 함수
sort_values()
로우 인덱스나 컬럼 인덱스들을 정렬해 주는 함수
sort_values() , sort_values() -> 동일한 인자들을 제공
(by=None,
axis=0,
ascending=True,
inplace=False,
kind='quicksort',
na_position='last')
by=None : 정렬한 기준 변수 -> 필수지정
axis=0 : index or columns(default)
ascending=True : Ture -> 오름차순 , False -> 내림차순
inplace=False : 정렬 결과를 원본에 반영할 것인지 True -> 반영 Fasle -> 미반영
kind='quicksort' : 정렬 알고리즘(default)
na_position='last' : 결측값, 위치('first','last') (default)
import pandas as pd from pandas import Series, DataFrame import numpy as np
정렬
* 데이터 정렬 : sort_values()
# 샘플 데이터 생성 np.random.seed(0) df = pd.DataFrame(np.random.randint(50, 100, (5, 6)), columns=[[2019, 2019, 2019, 2020, 2020, 2020], ['영어','수학', '과학','영어','수학', '과학']], index = ['Kim','Park','Lee','Jung','Moon']) df.index.set_names('학생명', inplace = True) df.columns.set_names(['년도','과목'], inplace = True) df.loc['Moon', (2019, '과학')] = np.nan
1) Series 정렬
# Series 정렬을 위한 샘플 데이터 sr = Series([3,5,2,1,7,10], index = list('bcafed')) sr
실행결과
b 3 c 5 a 2 f 1 e 7 d 10 dtype: int64
# 로우 인덱스 라벨의 값으로 정렬 sr.sort_index()
실행결과
a 2 b 3 c 5 d 10 e 7 f 1 dtype: int64
# Series의 값으로 정렬 (기본값 = 오름차순) sr.sort_values()
실행결과
f 1 a 2 b 3 c 5 e 7 d 10 dtype: int64
# Series의 값으로 내림차순 정렬 sr.sort_values(ascending = False)
d 10 e 7 c 5 b 3 a 2 f 1 dtype: int64
2) DataFrame 정렬
- 2차원 DataFrame 정렬
- df에서 2020년 데이터만 선택하여 df2020 생성한 후 실습
df2020 = df[2020]
# 학생명으로 정렬 df2020.sort_index(axis = 0)
실행결과
과목 영어 수학 과학 학생명 Jung 67 87 75 Kim 53 53 89 Lee 51 88 89 Moon 70 66 55 Park 86 73 56
# 수학 성적으로 오름차순 정렬 df2020.sort_values(by = '수학')
실행결과
과목 영어 수학 과학 학생명 Kim 53 53 89 Moon 70 66 55 Park 86 73 56 Jung 67 87 75 Lee 51 88 89
# 실습. 영어 성적의 내림차순 정렬 df2020.sort_values(by = '영어',ascending = False)
실행결과
과목 영어 수학 과학 학생명 Park 86 73 56 Moon 70 66 55 Jung 67 87 75 Kim 53 53 89 Lee 51 88 89
- 3차원 데이터 정렬 (계층색인)
df
실행결과
년도 2019 2020 과목 영어 수학 과학 영어 수학 과학 학생명 Kim 94 97 50.0 53 53 89 Park 59 69 71.0 86 73 56 Lee 74 74 62.0 51 88 89 Jung 73 96 74.0 67 87 75 Moon 63 58 NaN 70 66 55
# 2020년 수학 성적 기준으로 내림차순 정렬 df.sort_values(by = (2020,'수학'),ascending = False)
실행결과
년도 2019 2020 과목 영어 수학 과학 영어 수학 과학 학생명 Lee 74 74 62.0 51 88 89 Jung 73 96 74.0 67 87 75 Park 59 69 71.0 86 73 56 Moon 63 58 NaN 70 66 55 Kim 94 97 50.0 53 53 89
# 2개 이상의 컬럼으로 정렬하기 df.sort_values(by = [(2020,'수학'),(2019,'수학')], ascending = [False, True])
실행결과
년도 2019 2020 과목 영어 수학 과학 영어 수학 과학 학생명 Lee 74 74 62.0 51 88 89 Jung 73 96 74.0 67 87 75 Park 59 69 71.0 86 73 56 Moon 63 58 NaN 70 66 55 Kim 94 97 50.0 53 53 89
# 정렬 결과를 원본에 반영하기 df.sort_values(by = (2020, '수학'),ascending = False, inplace = True)
실행결과
년도 2019 2020 과목 영어 수학 과학 영어 수학 과학 학생명 Lee 74 74 62.0 51 88 89 Jung 73 96 74.0 67 87 75 Park 59 69 71.0 86 73 56 Moon 63 58 NaN 70 66 55 Kim 94 97 50.0 53 53 89
반응형'Languages > python' 카테고리의 다른 글
[python] 파이썬을 이용한 빅 데이터 실습 9 - 데이터 통합 (0) 2021.11.01 [python] 파이썬을 이용한 빅 데이터 실습 7 - DataFrame , 계층색인 (0) 2021.11.01 [python] 파이썬을 이용한 빅 데이터 실습 6- DataFrame (0) 2021.10.30 [python] 파이썬을 이용한 빅 데이터 실습 5- DataFrame (0) 2021.10.30 [python] 파이썬을 이용한 빅 데이터 실습 4- DataFrame (0) 2021.10.30 - 2차원 DataFrame 정렬