LiJell's 성장기

14.python.drop_shift_rename 본문

Bigdata/파이썬_Python

14.python.drop_shift_rename

All_is_LiJell 2022. 1. 7. 18:18
반응형

Modified on Jan 07 2022
# -- coding: utf-8 --
"""
Created on Tue Dec 28 13:14:11 2021

@author: hanju
"""

14. drop, shift, rename

1. drop

  • 특정 행, 컬럼 제거
  • 이름 전달
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

# scott 퇴사
emp.loc()

emp['ename'] =='scott' # 조건문

emp.loc[emp['ename'] == 'scott'] # scott 관련된 record
#    empno  ename  deptno   sal
# 4      5  scott      30  4100

emp.loc[emp['ename'] == 'scott',:]
#    empno  ename  deptno   sal
# 4      5  scott      30  4100

emp.loc[~(emp['ename'] == 'scott'),:] # ~ 는 not을 뜻함. 따라서 scott이라는 이름과 같은애를 빼줘 전체에서 뜻함
#    empno  ename  deptno   sal
# 0      1  smith      10  4000
# 1      2  allen      10  4500
# 2      3   ford      20  4300
# 3      4  grace      10  4200
# 5      6   king      20  4000


emp
emp.drop(4, axis=0) # 행기준, 4번째 idx 제외

[예제]

  • emp 데이터셋에서 sal 컬럼 제외 (iloc)
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
# 5      6   king      20  4000
emp.drop('sal', axis = 1)

#    empno  ename  deptno
# 0      1  smith      10
# 1      2  allen      10
# 2      3   ford      20
# 3      4  grace      10
# 4      5  scott      30
# 5      6   king      20

emp.iloc[:,:-1]              #
emp.iloc[:,0:3]              #
emp.loc[:, "empno":"deptno"] #위 세개는 모두 같은 값 # str으로 슬라이싱을 해주면 마지막 까지 포함해서 나옴
#    empno  ename  deptno
# 0      1  smith      10
# 1      2  allen      10
# 2      3   ford      20
# 3      4  grace      10
# 4      5  scott      30
# 5      6   king      20

emp.drop(['ename','deptno'], axis=1)
 '''
   empno   sal
0      1  4000
1      2  4500
2      3  4300
3      4  4200
4      5  4100
5      6  4000
'''

2. shift

  • 행 또는 열을 이동
  • 전일자 대비 증감율
emp
emp['sal'].shift() # default : axis = 0 # 한칸씩 밀림
'''
0       NaN
1    4000.0
2    4500.0
3    4300.0
4    4200.0
5    4100.0
Name: sal, dtype: float64
'''

예제 - 다음 데이터프레임에서 전일자 대비 증감율 출력

s1 = Series([3000,3500,4200,2800,3600], index=['2021/01/01','2021/01/02', '2021/01/03' , '2021/01/04', '2021/01/05'])

s1

'''
2021/01/01    3000
2021/01/02    3500
2021/01/03    4200
2021/01/04    2800
2021/01/05    3600
dtype: int64
'''

# 1월 2일 증감률 >> ((1월-2월)/2월)*100  >>>> ((3500-3000)/3000)*100

s1.shift()
'''
2021/01/01       NaN
2021/01/02    3000.0
2021/01/03    3500.0
2021/01/04    4200.0
2021/01/05    2800.0
dtype: float64
'''
(s1-s1.shift())/s1.shift() * 100
'''
2021/01/01          NaN
2021/01/02    16.666667
2021/01/03    20.000000
2021/01/04   -33.333333
2021/01/05    28.571429
dtype: float64
'''

3. rename

  • 행, 컴럼명 변경
emp
emp.columns = ['emptno','ename','deptno','salary']
emp
'''
   emptno  ename  deptno  salary
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.rename({'salary':'sal', 'deptno' : 'dept_no'}, axis =1)
'''
   emptno  ename  dept_no   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 을 index 로 설정 후 scott을 SCOTT 변경경해 보세요
emp.set_index('ename').rename({'scott':'SCOTT'})
'''
       emptno  deptno  salary
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
'''
emp = emp.set_index('ename')
emp.rename({"scott":"SCOTT"}, axis = 0)
'''
       emptno  deptno  salary
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
'''
emp
반응형

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

16.python_NA_missing_duplicate_value  (0) 2022.01.10
15.python_stack_unstack_pivot_table  (0) 2022.01.08
13.python_merge_concat_join  (0) 2022.01.06
12.python_pandas_groupby  (0) 2022.01.05
11.python_pandas_sort  (0) 2022.01.04
Comments