파이썬 기초 문법 강의 – 5일차 Pandas
오늘은 파이썬에서 가장 많이 사용되는 라이브러리 중 하나인 Pandas를 알아보겠습니다.
판다스란?
판다스는 파이썬에서 데이터 구조 및 데이터 구조를 분석할 수 있는 오픈소스 라이브러리 입니다.
판다스는 데이터를 불러오고 변환하고 출력하는데 특출나는데요.
판다스는 기본적으로 숫자 테이블과 시계열을 조작하기 위한 데이터 구조와 연산을 제공하며, 무엇보다 무료입니다. 또한 pandas란 이름은 한 개인에 대해 여러 기간동안 관찰을 한다는 데이터 세트에 대한 계량 경제학 용어인 “패널 데이터”라는 용어에서 파생되었다고 하며, “Python 데이터 분석”이라는 문구 자체에서 따온 것이라고 합니다.
판다스 데이터 구조
판다스는 데이터를 시리즈와 데이터프레임으로 처리하는데요.
판다스 시리즈
시리즈는 일차원 배열로 이루어진 연속적인 값들과 인덱스로 불리는 자료 라벨(label) 배열로 이루어진 객채를 말합니다. 파이썬 리스트로부터 간단한 시리즈를 다음과 같이 만들 수 있습니다.
이번도 실습을 통해서 알아보겠습니다. 역시 라이브러리 설치를 안하면 아래와 같은 No module named ‘pandas’ 에러메시지가 나오기 때문에 CMD에서 pip install pandas를 통해서 라이브러리를 설치해줍니다.
판다스 설치가 되면 여러 패키지가 같이 설치됩니다.
판다스 정상 설치 후 아래처럼 간단하게 시리즈를 만들고 출력해보겠습니다.
import pandas as pd
animals = ['lion', 'Bear', 'Tiger']
print(animals)
test = pd.Series(animals)
print(test)
test2 = pd.Series(animals, index =['korea','japan','china'] )
출력결과를 보면 인덱스가 자연스럽게 0부터 붙게 되는데요. 시리즈를 생성할 때 index 변수로 만들수도 있고, 아래처럼 test.index=를 통해서 인덱스를 별도로 설정하셔도 됩니다.
그리고 판다스의 시리즈 역시 인덱싱이 가능한데요.
슬라이싱
나중에 좀더 자세히 다루겠지만 인덱싱할때 iloc과 loc 두가지 방법이 있는데요.
- loc 는 레이블 기반 (label-based) 또는 블리언 배열(boolean array) 기반으로 데이터를 선택하는 방식
- iloc 는 정수 기반의 위치 (integer-based position) 또는 블리언 배열(boolean array) 기반으로 데이터를 선택하는 방식
슬라이싱은 기본적으로 콜론을 통해서 특정 범위 값에 접근이 가능한데요. 이 때 콜론을 기준으로 앞을 생략하면 처음부터, 뒤를 생략하면 마지막까지라는 것을 기본적으로 이해하시면 됩니다. 그리고 마지막의 경우 -1을 통해서 동작하게 됩니다.
위의 시리즈를 여러가지 인덱싱과 슬라이싱을 해볼 수 있습니다.
그리고 이제 데이터프레임을 공부해보도록 하겠습니다.
시리즈의 장점은 빠른 속도인데요. 주피터 노트북은 %%timeit으로 가능하고 idle에서는 아래와 같이 진행이 가능합니다.
import numpy as np
import pandas as pd
import timeit
def sum1(a):
summary = 0
for item in a:
summary+= item
return summary
def sum2(a):
summary = np.sum(a)
return summary
a = pd.Series(np.random.randint(0,1000,10000))
t1 = timeit.timeit('sum1(a)', globals=globals(), number=100)
t2 = timeit.timeit('sum2(a)', globals=globals(), number=100)
print('sum1 실행시간:',t1)
print('sum2 실행시간:',t2)
sum1 실행시간: 0.050195800000437885
sum2 실행시간: 0.001471999999921536
판다스 데이터프레임
판다스의 Series가 1차원 형태의 자료구조라면 DataFrame은 여러 개의 칼럼(Column)으로 구성된 2차원 형태의 자료구조입니다. 행(row)와 열(column)으로 구성되어 있으며 엑셀의 sheet와 유사한 형태입니다.
기본적으로 아래와 같은 속성을 가지고 있습니다
- index : 인덱스
- columns : 칼럼 명
- values : numpy arrya 형태의 데이터 값
- dtype : 데이터 타입
- T : 데이터 전치
DataFrame 객체를 생성하는 가장 쉬운 방법은 파이썬의 딕셔너리를 사용하는 방식인데요. 딕셔너리를 통해 각 칼럼에 대한 데이터를 저장한 후 딕셔너리를 DataFrame 클래스의 생성자 인자로 넘겨주면 DataFrame 객체가 생성되게 됩니다. 아니면 앞서 말씀드린 1차원 배열인 시리즈를 모아도 가능합니다.
import pandas as pd
data = {
'age' : [25,23,48],
'height' : [153,142,275],
'weight' : [47,53,165]
}
idx = ['짱구','코난','푸']
df = pd.DataFrame(data, index = idx)
df.head()
df.info()
print(df)
아니면 아래처럼 외부의 csv, 엑셀 파일등을 불러와서 사용할 수도 있습니다.
판다스가 아닌 경우 csv 패키지를 통해서 가능한데요.
import csv
with open('test.csv','r', encoding='UTF8') as csvfile:
tests = list(csv.reader(csvfile))
print(tests)
https://docs.python.org/ko/3/library/csv.html
import pandas as pd
TRAIN_DATA_URL = "https://storage.googleapis.com/tf-datasets/titanic/train.csv"
df = pd.read_csv(TRAIN_DATA_URL)
print(df)
df.info()
판다스에서는 read_csv 명령어로 읽어올 수 있습니다. info를 통해 데이터 베이스의 대략적인 정보를 확인할 수 있습니다.
이 후 자세한 용법은 다음시간에 이어서 공부해보도록 하겠습니다.