20200316_판다스(인덱스_정렬).html
0.28MB

#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)

+ Recent posts