[ pandas ] 시리즈 Series
pandas
import pandas as pd
- 빅데이터 연산의 기초
- 데이터 구조를 정의
- numpy와 같은 타 모듈과의 전환이 용이
- pd라고 alias를 정의해 빠르게 사용 다른 alias를 지정해도 사용에는 무방하나 pd로 칭하는게 암묵적인 룰
시리즈란
- 파이썬기본 데이터유형인 딕셔너리와 유사한형태
- index : value 형태로 이루어진 데이터
- 집계연산의 편의, 인덱싱의 편의
- 시리즈를 결합하면 데이터프레임이됨
- 데이터프레임에서 그룹 연산시 산출물이 시리즈로 제공되기 때문에 알고있어야 도움
생성
series1 = pd.Series({'국어':100, '수학':90, '영어':80})
series2 = pd.Series([100,20,45,90,100,87,45], index = ['k','e','a','b','f','c','d'])
series3 = pd.Series([100,20,45,90,100,87,45])
print(series1)
print('-'*30)
print(series2)
print('-'*30)
print(series3)
국어 100
수학 90
영어 80
dtype: int64
------------------------------
k 100
e 20
a 45
b 90
f 100
c 87
d 45
dtype: int64
------------------------------
0 100
1 20
2 45
3 90
4 100
5 87
6 45
dtype: int64
value와 인덱스를 지정하여 생성가능 인덱스를 지정하지 않을시 0에서 시작하는 정수로 순서대로 임의의 인덱스 부여
딕셔너리와 유사한 형태이기때문에 딕셔너리로 생성도 가능
인덱싱과 슬라이싱
두가지 방법으로 가능 해당하는 인덱스로 / 위치로
print(series2)
print('-'*30)
# 인덱스로 인덱싱 혹은 슬라이싱
print(series2['k'])
print('-'*30)
print(series2['k':'a'])
print('-'*30)
# 위치로
print(series2.iloc[1])
print('-'*30)
print(series2.iloc[:1])
k 100
e 20
a 45
b 90
f 100
c 87
d 45
dtype: int64
------------------------------
100
------------------------------
k 100
e 20
a 45
dtype: int64
------------------------------
20
------------------------------
k 100
dtype: int64
인덱싱시 해당하는 인덱스에 속한 밸류를 반환한다.
슬라이싱시 해당하는 범위의 시리즈를 반환한다.
iloc을 이용할시 위치에 따라 인덱싱과 슬라이싱이 가능하다 1번째 값은(파이썬은 0부터시작) 20이기에 20을 반환
iloc[:1] 은 1번째 전까지의 녀석을 시리즈로 반환한다.
series2[['a','b','d']]
a 45
b 90
d 45
dtype: int64
이렇게 원하는녀석들만 볼 수도있다.
불리언 인덱싱
print((90>=series2) & (series2>50))
print('-'*30)
print(series2.loc[(90>=series2) & (series2>50)])
k False
e False
a False
b True
f False
c True
d False
dtype: bool
------------------------------
b 90
c 87
dtype: int64
시리즈의 밸류에 관하여 불리언 연산이 가능하고
그 불리언의 트루에 해당하는값만을 슬라이싱 가능하다.
print(series2.loc[(series2.index > 'b').tolist()])
k 100
e 20
f 100
c 87
d 45
dtype: int64
이런식으로 한다면 인덱스의 불리언 연산도 가능하다.
따로 기능이있는지는 잘모르겠다
시리즈 정렬
print(series2.sort_values())
print('-'*30)
print(series2.sort_values(ascending = False))
e 20
a 45
d 45
c 87
b 90
k 100
f 100
dtype: int64
------------------------------
k 100
f 100
b 90
c 87
a 45
d 45
e 20
dtype: int64
시리즈의 값을 기준으로 정렬을 할 수 있다. ascending을 False로 설정하면 내림차순으로 정렬된다.
print(series2.sort_index())
print('-'*30)
print(series2.sort_index(ascending = False))
a 45
b 90
c 87
d 45
e 20
f 100
k 100
dtype: int64
------------------------------
k 100
f 100
e 20
d 45
c 87
b 90
a 45
dtype: int64
인덱스를 기준으로도 거의 동일하게 정렬이 가능하다.
갯수세기
series2.value_counts()
100 2
45 2
20 1
90 1
87 1
dtype: int64
밸류의 갯수세기도 가능하다
인덱스는 보통 유일한 값을 가지기때문에 인덱스에 대한 물음은 가지지않았다.
간단한 연산
print(series2.mean())
print(series2.max())
print(series2.min())
print(series2.median())
69.57142857142857
100
20
87.0