Pandas
pandas 는 새로운 자료구조 Series, DataFrame 를 제공한다. 파이썬에서 기본으로 제공해주는 리스트와 딕셔너리를 사용할 수 있지만 이것들을 사용하는 것은 마치 요리를 하기 전 칼과 도마와 같은 장비들을 직접 만드는 것에 빗댈 수 있을 것 같다. 데이터를 이리저리 쉽게 다룰 수 있도록 도와주는 것이 Series 와 DataFrame 이다. 이에 대해 간단한 것들에 대해서 정리하고자 한다. 필요한 것들이 있다면 그때그때 구글링해서 찾아쓰면 되기 때문이다.
우선, pands를 사용하기 위해서는 아래와 같이 import 를 해줘야한다.
import pandas as pd
이제 Series 와 DataFrame 에 대해서 알아보자.
Series
순서가 있는 1차원 자료구조이며 구성요소는 index, value 2가지이다.
# A, B, C, D, E
math = [90, 92, 89, 90, 91]
eng = [89, 90, 93, 91, 88]
kor = [92, 91, 92, 90, 92]
이와 같은 예시가 있을 때
1. Series 로 만들기
math_sr = pd.Series( math )
eng_sr = pd.Series( eng )
이와 같이 만들어주면 된다. 일단 이렇게 봤을 때 list 의 차이점이 무엇이길래 Series 를 사용하는 지 궁금해질 것 같다.
우선, 처음 Series 로 만들때 index 값을 정할 수 있다.
math_sr = pd.Series( math, index=['A', 'B', 'C', 'D', 'E'] )
eng_sr = pd.Series( eng, index=['A', 'B', 'C', 'D', 'E'] )
2. 데이터 접근
우리가 list 에서는 index 값이 0, 1, 2, ...같이 정해져 있지만, 위와 같은 방법으로 Series 로 만들면 index 를 직접 명시할 수 있게 된다. 이렇게 되면 딕셔너리에서 키값을 통해 value 를 얻는 것과 비슷한 방식으로 원소에 접근할 수 있다.
print(math_sr['A'])
print(math_sr[0])
# 90
# 90
3. 슬라이싱
범위를 지정하여 원하는 부분만큼의 데이터를 가져올 수 있다. 이것을 슬라이싱이라고 한다. 기본적인 순서 인덱스를 통해 범위를 지정하고 가져온다고 할 때 아래와 같은 코드에서는 0번째부터 3번째 전까지 즉, 0~2에 해당하는 데이터를 가져온다.
math_sr[0:3]
# A 90
# B 92
# C 89
# dtype: int64
앞서 설정한 index 값에 대해서 접근하여 사용할 수 있으며, -1은 리스트의 맨 끝 위치를 나타내므로 [:-1] 은 처음부터 끝까지에 해당한다.
math_sr['A':'D'] # 'A'부터 'D'까지
math_sr[:-1] # 처음부터 끝까지
4. 함수들
4.1 정렬
정렬을 하면서 list 와 다른 점이 있다. Series 는 정렬을 하면 인덱스가 같이 움직인다는 것이다. 그렇기 때문에 기존의 인덱스 위치값을 쉽게 알 수 있다. 지금음 'A' ~ 'E' 의 인덱스를 준 것에 대해보였는데, 기본적인 숫자 인덱스의 경우도 동일하게 같이 움직인다.
math_sr.sort_values( ascending=False ) # 인덱스와 같이 움직임
# B 92
# E 91
# A 90
# D 90
# C 89
4.2 간단한 통계값 구하기
math_sr.describe()
# count 5.000000
# mean 90.400000
# std 1.140175
# min 89.000000
# 25% 90.000000
# 50% 90.000000
# 75% 91.000000
# max 92.000000
# dtype: float64
5. 필터링
필터링은 조건을 통해서 데이터를 가져온다. [ 조건 ] : 대괄호 안에 조건을 넣는다. 조건은 True, False 의 bool 데이터 타입의 결과를 반환하여 필터링이 된다. 두번째 블럭을 보면, 해당 조건에 대해 True 인 B, E 가 첫번째 블럭에서 출력되는 것을 볼 수 있다.
math_sr[ math_sr > 90 ]
# B 92
# E 91
math_sr > 90
# A False
# B True
# C False
# D False
# E True
# dtype: bool
6. 시리즈의 연산
시리즈 - 시리즈 : 값을 기준으로 같은 인덱스끼리 연산을 한다.
시리즈 - 값 : 시리즈의 모든 데이터에 같은 값을 똑같이 연산해준다. 위의 math_sr > 90 을 보면 된다.
math_sr / eng_sr
# A 1.011236
# B 1.022222
# C 0.956989
# D 0.989011
# E 1.034091
'IT > 인공지능' 카테고리의 다른 글
[matplotlib] 데이터 별 시각화 처리 (0) | 2022.08.12 |
---|---|
[Pandas] DataFrame 기초 (0) | 2022.08.11 |
[matplotlib] 한번에 그래프 여러개 그리기 (0) | 2022.07.31 |
colab에 접속하여 tensorflow, numpy, pandas, matplotlib 버전 출력해 보기 (0) | 2022.06.06 |
댓글