#set_index() : 데이터프레임을 먼저 불러 온 후, 특정 열을 인덱스로 설정
import pandas as pd
exam_data = {'이름' : ['서준','우현','인아'],
'수학' : [90,80,70],
'영어' : [98,89,95],
'음악' : [85,95,100],
'체육' : [100,90,90]}
df = pd.DataFrame(exam_data)
print(df)
print('\n')
ndf1 = df.set_index('이름') # '이름'열을 인덱스로 사용
print(ndf1)
print('\n')
ndf2 = ndf1.set_index(['음악']) # '음악'열을 인덱스로 사용
print(ndf2)
print('\n')
ndf3 = ndf1.set_index(['수학','음악']) # '수학','음악'열을 인덱스로 사용
print(ndf3)
#이름 열을 인덱스로 설정하고 다시 음악열에 인덱스로 부여 해줄 때 이름열이 사라짐.
#인덱스로 지정해되 기존 열은 남겨 둔다.(drop=True)
print(ndf1.set_index('음악', drop=False))
#reindex() : 행 인덱스 재배열
dict_data = {'c0':[1,2,3], 'c1':[4,5,6], 'c2':[7,8,9], 'c3':[10,11,12], 'c4':[13,14,15]}
df = pd.DataFrame(dict_data, index = ['r0','r1','r2'])
print(df)
print('\n')
#인덱스 자체를 바꿔주는 함수가 아니기 때문에 기존 값이 없으면 NaN 값이 채워짐
new_index = ['r0','r1','r2','r3','r4']
ndf = df.reindex(new_index)
print(ndf)
print('\n')
#NaN을 0으로 채우려면 fill_value=0
ndf = df.reindex(new_index, fill_value=0)
print(ndf)
print('\n')
#새로운 인덱스를 지정하면 모두 NaN값
test = df.reindex(['s1','s2','s3'])
print(test)
#reset_index() : 행 인덱스 초기화
#처음부터 다시 재배열 해주는 함수
dict_data = {'c0':[1,2,3], 'c1':[4,5,6], 'c2':[7,8,9], 'c3':[10,11,12], 'c4':[13,14,15]}
df = pd.DataFrame(dict_data, index = ['r0','r1','r2'])
print(df)
print('\n')
#행 인덱스를 정수형, 기본값인 0부터 시작하는 순서로 초기화
ndf = df.reset_index()
print(ndf)
print('\n')
#drop=True 기존 인덱스를 버리고 재배열
#inplace=True
df.reset_index(drop=True, inplace=True)
print(df)
#sort_index() : 열의 데이터 값을 기준으로 정렬
#df.sort_value(by ='열이름', ascending = True)
dict_data = {'c0':[1,2,3], 'c1':[4,5,6], 'c2':[7,8,9], 'c3':[10,11,12], 'c4':[13,14,15]}
df = pd.DataFrame(dict_data, index = ['r0','r1','r2'])
#c1열을 기준으로 내림차순 정렬
ndf = df.sort_values(by = 'c1',ascending=False)
print(df, '\n')
print(ndf)
':: IT > python' 카테고리의 다른 글
20200316 python 판다스(데이터 읽기_쓰기) (1) | 2020.03.20 |
---|---|
20200316 python 판다스(연산) (0) | 2020.03.20 |
20200316 python 판다스(pandas) 기초 (시리즈와 데이터프레임) (0) | 2020.03.20 |
20200320 python (전처리_시계열데이터) (0) | 2020.03.20 |
20200311 python (묘듈, 예외처리, 내장함수, map, 람다) (0) | 2020.03.19 |