Python

[Python] 판다스(Pandas) 라이브러리(Library)_2

구루싸 2019. 9. 14. 20:41
반응형
SMALL

오늘은 지난 번에 이어 판다스(Pandas) 라이브러리(Libarary)의 데이터프레임(DataFrame)에 대해 학습하겠습니다

지난 번에 데이터프레임의 행과 열을 생성하고 삭제하는 방법을 살펴보았는데

생성한 행과 열을 선택하거나 추가하고 값을 변경하는 법을 보겠습니다

선택을 위해서는 두가지의 인덱서를 사용합니다(loc, iloc)

구분 loc iloc
대상 인덱스 이름(index label) 정수형 위치 인덱스(integer position)
범위 범위의 끝을 포함한다 범위의 끝을 제외한다
# 판다스(Pandas)
import pandas

data = {'국어' : [100, 90, 80], '영어' : [98, 88, 78], '수학' : [76, 86, 96]}

df = pandas.DataFrame(data, index = ['학생1', '학생2', '학생3'])
print(df, end = '\n')
# 행 선택
print(df.loc['학생1'], end = '\n')
print(df.loc[['학생1', '학생2']], end = '\n')
print(df.loc['학생1' : '학생2'], end = '\n')
print(df.iloc[0], end = '\n')
print(df.iloc[[0, 1]], end = '\n')
print(df.iloc[0 : 1], end = '\n')

# 열 선택
print(df['수학']) #시리즈(Series) 반환
print(df.수학)
print(df[['수학', '영어']]) #데이터프레임(Dataframe) 반환

# 원소 선택
print(df.loc[['학생1', '학생2'], ['국어', '영어']])
print(df.iloc[[0, 1], [0, 1]])
print(df.iloc[0 : , 0 : ])

# 열 추가
df['음악'] = 0
print(df)

# 행 추가
df.loc['학생4'] = [70, 68, 100, 0]
df.loc['학생5'] = 0
print(df)

# 원소 변경
df.iloc[0][1] = 100
df.loc['학생1']['영어'] = 98
df.loc['학생1', '영어'] = 100
print(df)

# 전치 행렬
print(df.transpose(), end = '\n')
print(df.T, end = '\n')

이번에는 특정 열을 행 인덱스로 설정하는 법을 알아보겠습니다

(위의 코드에서는 데이터프레임을 생성하면서 인덱스를 설정하였습니다)

# 판다스(Pandas)
import pandas

data = {'학생' : ['학생1', '학생2', '학생3'], '국어' : [100, 90, 80], '영어' : [98, 88, 78], '수학' : [76, 86, 96]}

df = pandas.DataFrame(data)
print(df, end = '\n')

df = df.set_index(['학생'])
print(df, end = '\n')

df = df.sort_index(ascending = False) #내림차순
print(df, end = '\n')

df = df.sort_values(by = '영어', ascending = True) #영어 열 기준으로 오름차순
print(df, end = '\n')

df = df.reset_index()
print(df, end = '\n')

new_index = ['영수', '영희', '철수']
df = df.reindex(new_index, fill_value = 0)
print(df, end = '\n')

학생 열을 행 인덱스로 설정하고 내림차순으로 정렬, 영어 열로 오름차순으로 정렬, 새로운 인덱스를 설정하고 값을 0으로 채워봤습니다

(fill_value = 0 없으면 NaN(Not a Number)가 출력됩니다)

오늘은 여기까지하고 다음엔 시리즈와 값, 시리즈와 시리즈, 데이터프레임과 값, 데이터프레임과 데이터프레임 연산에 대해 학습하겠습니다

 

반응형
LIST