LiJell's 성장기

11.python_pandas_sort 본문

Bigdata/파이썬_Python

11.python_pandas_sort

All_is_LiJell 2022. 1. 4. 19:28
반응형

emp.csv
0.00MB

 

 

Modified on Jan 04 2022
# -- coding: utf-8 --
"""
Created on Fri Dec 24 13:23:31 2021

@author: hanju
"""

pandas 정렬 sort()

예제파일은 다운 후 파일을 불러 올 때 경로를 잘 설정해주면 된다. 다운로드 참고

import pandas as pd
import numpy as np
from pandas import Series, DataFrame

pwd # present working directory 현 위치 폴더(디렉토리)

# C:\Users\hanju\Desktop\multicamp\data

pd.read_csv('C:/Users/hanju/Desktop/multicamp/data/emp.csv') # 절대 경로로 열기
pd.read_csv('./data/emp.csv') # 현재 경로에서 추가로 경로 설정해서 읽기

현재경로 확인하기

import os 
os.getcwd() # cwd = current working directory
# 'C:\\Users\\hanju\\Desktop\\multicamp'

sort() 정렬

1. sort_index
  • Series, DataFrame 호출 가능
  • index, column 재배치
emp = pd.read_csv('./data/emp.csv') 
emp
#    empno  ename  deptno   sal
# 0      1  smith      10  4000
# 1      2  allen      10  4500
# 2      3   ford      20  4300
# 3      4  grace      10  4200
# 4      5  scott      30  4100
# 5      6   king      20  4000

emp.ename
emp['ename'] #둘중 한가지 방법으로. 메서드 체인과 헷갈릴 수 있어서 이 방법 추천
# 0    smith
# 1    allen
# 2     ford
# 3    grace
# 4    scott
# 5     king
# Name: ename, dtype: object
# 요청 결과를 Series로 반환

emp['empno']

# 0    1
# 1    2
# 2    3
# 3    4
# 4    5
# 5    6
# Name: empno, dtype: int64

emp.idx = emp['empno']
emp.idx
emp.iloc[:,1:] # 행의 모든 것을 가져오고 열 중에서는 1 위치값부터 끝까지 반환해라
#    ename  deptno   sal
# 0  smith      10  4000
# 1  allen      10  4500
# 2   ford      20  4300
# 3  grace      10  4200
# 4  scott      30  4100
# 5   king      20  4000

emp
#    empno  ename  deptno   sal
# 0      1  smith      10  4000
# 1      2  allen      10  4500
# 2      3   ford      20  4300
# 3      4  grace      10  4200
# 4      5  scott      30  4100
# 5      6   king      20  4000
emp.set_index('ename')
#        empno  deptno   sal
# ename                     
# smith      1      10  4000
# allen      2      10  4500
# ford       3      20  4300
# grace      4      10  4200
# scott      5      30  4100
# king       6      20  4000

emp1 = emp.set_index('ename')
emp1.sort_index(ascending=False) # 내림차순
#        empno  deptno   sal
# ename                     
# smith      1      10  4000
# scott      5      30  4100
# king       6      20  4000
# grace      4      10  4200
# ford       3      20  4300
# allen      2      10  4500
emp1.sort_index(ascending=True) # 오름차순
#     empno  deptno   sal
# ename                     
# allen      2      10  4500
# ford       3      20  4300
# grace      4      10  4200
# king       6      20  4000
# scott      5      30  4100
# smith      1      10  4000

emp1.sort_index(descending=False) #안되네..

emp1.sort_index(axis=1)                # axis =1 열을 말함
#        deptno  empno   sal
# ename                     
# smith      10      1  4000
# allen      10      2  4500
# ford       20      3  4300
# grace      10      4  4200
# scott      30      5  4100
# king       20      6  4000
emp1.sort_index(axis=0)                # axis =0 행을 말함
#        empno  deptno   sal
# ename                     
# allen      2      10  4500
# ford       3      20  4300
# grace      4      10  4200
# king       6      20  4000
# scott      5      30  4100
# smith      1      10  4000

2. sort_values

  • Series, DataFrame 호출 가능
  • 본문의 값(value)으로 정렬 (Series, DataFrame 특정 칼럼 순서대로)
emp1.sort_values(by='sal')
emp1.sort_values('sal')       # by 생략 가능
#        empno  deptno   sal
# ename                     
# smith      1      10  4000
# king       6      20  4000
# scott      5      30  4100
# grace      4      10  4200
# ford       3      20  4300
# allen      2      10  4500

emp1.sort_values(by='sal', ascending=False)
#        empno  deptno   sal
# ename                     
# allen      2      10  4500
# ford       3      20  4300
# grace      4      10  4200
# scott      5      30  4100
# smith      1      10  4000
# king       6      20  4000

부서별, 연봉 수준

emp1.sort_values(by=['deptno','sal']) 
# 중요도 순 by=['a','b']는 a를 우선시하여 배열한 후 b를 배열한다는 말임

#        empno  deptno   sal
# ename                     
# smith      1      10  4000
# grace      4      10  4200
# allen      2      10  4500
# king       6      20  4000
# ford       3      20  4300
# scott      5      30  4100

emp1.sort_values(by=['deptno','sal'], ascending=[True,False])

#        empno  deptno   sal
# ename                     
# allen      2      10  4500
# grace      4      10  4200
# smith      1      10  4000
# ford       3      20  4300
# king       6      20  4000
# scott      5      30  4100
반응형

'Bigdata > 파이썬_Python' 카테고리의 다른 글

13.python_merge_concat_join  (0) 2022.01.06
12.python_pandas_groupby  (0) 2022.01.05
10.python_replace_method  (0) 2022.01.03
09.python_pandas_arithmetic_method  (0) 2022.01.02
08.python_pandas_string_method  (0) 2022.01.02
Comments