오늘은 판다스(Pandas) 라이브러리(Library)에 대해 알아보겠습니다
판다스 라이브러리는 데이터를 수집하고 정리하는 데 유용한 오픈 소스(open source)입니다
데이터 분석을 위해서는 우선적으로 데이터가 필요합니다
그런데 다양한 소스(source)로부터 수집하는 데이터는 형태나 속성이 매우 다양하기 때문에
컴퓨터가 이해할 수 있으면서도 동일한 형식을 갖는 구조로 통합할 필요가 있습니다
이를 위해서 판다스는 시리즈(Series, 1차원 배열)와 데이터프레임(DataFrame, 2차원 배열)이라는 구조화된 데이터 형식을 제공합니다
시리즈(Series)는 앞서 언급했듯이 1차원 배열의 형태를 갖습니다
인덱스(index)와 데이터가 1:1 대응을 하는 형태로 파이썬(Python)의 딕셔너리(Dictionary)와 비슷합니다
딕셔너리에서는 키(Key)와 값(Value)이 1:1 대응하여 키를 알면 값을 알 수 있었는데
시리즈는 인덱스(index)를 알면 바로 그 값을 알 수 있습니다
# 판다스(Pandas)
import pandas
dict_data = {'key1': 1, 'key2': 2, 'key3': 3}
# Series() 함수로 dictionary를 Series로 변환
series = pandas.Series(dict_data)
print(type(series),end = '\n')
print(series)
print(series['key1']) #인덱스 이름으로 접근
print(series[0]) #인덱스 위치로 접근
# Series() 함수로 list를 Series로 변환
list_data = ['string', 3.14, 100, True]
series = pandas.Series(list_data)
print(series)
# Series() 함수로 tuple을 Series로 변환
tup_data = ('string', 3.14, 100, True)
series = pandas.Series(tup_data, index = ['문자열', '원주율', '만점', '참'])
print(series)
print(series['문자열'])
위의 소스를 보면 리스트(list)와 튜플(tuple)을 시리즈(Series)로 변환하는데
인덱스 명을 따로 지정하지 않으면 default로 정수형 인덱스(index)가 지정되고
인덱스 명을 지정하면 해당 인덱스 명으로 해당 값에 접근이 가능하게됩니다
데이터프레임(DataFrame)은 행(row)과 열(column)로 이루어진 2차원 배열 형태입니다
(여러 개의 시리즈(Series)를 모아놓은 형태)
이 구조는 엑셀(Excel)이나 관계형 데이터베이스(RDBMS) 등에서 사용됩니다
# 판다스(Pandas)
import pandas
dict_data = {'col0': [1,2,3], 'col1': [4,5,6], 'col2': [7,8,9]}
# Series() 함수로 dictionary를 Series로 변환
df = pandas.DataFrame(dict_data)
print(type(df),end = '\n')
print(df)
df = pandas.DataFrame([[1, 100, '1반'], [2, 98, '2반']], index = ['영수', '철수'], columns = ['석차', '점수', '반'] )
print(df)
# 열 이름 중 '석차' 를 '등수'로 변경
df.rename(columns = {'석차' : '등수'}, inplace = True)
# 행 인덱스 중 '영수'를 '학생1', '철수'를 '학생2'로 변경
df.rename(index = {'영수':'학생1', '철수':'학생2'}, inplace = True)
print(df)
# 행 삭제
df.drop(['학생1'], axis = 0, inplace = True)
print(df)
# 열 삭제
df.drop(['등수', '반'], axis = 1, inplace = True)
print(df)
위의 코드는 데이터프레임(DataFrame) 생성과 열 이름, 행 인덱스 변경, 행 삭제, 열 삭제를 하는 것입니다
오늘은 너무 피곤해서-_- 여기까지하고 다음 번에 데이터프레임을 이어서 학습하도록 하겠습니다
'Python' 카테고리의 다른 글
[Python] 판다스(Pandas) 라이브러리(Library)_3 (0) | 2019.09.14 |
---|---|
[Python] 판다스(Pandas) 라이브러리(Library)_2 (0) | 2019.09.14 |
[Python] 아나콘다(Anaconda) 설치 (0) | 2019.09.09 |
[Python] Tk Interface(tkinter) 알아보기_2 (0) | 2019.09.05 |
[Python] 간단한 메모장 만들기 (0) | 2019.09.05 |