시리즈
시리즈 (Series) 클래스는 numpy에서 제공하는 1차원 배열과 비슷하지만 각 데이터의 의미를 표시하는 인덱스 (index)를 붙일 수 있다. 데이터 자체는 값 (value)라고 한다.
시리즈 = 값 (value) + 인덱스 (index) |
시리즈 생성
데이터를 리스트나 1차원 배열 형식으로 Series 클래스 생성자에 넣어주면 시리즈 클래스 객체를 만들 수 있다. 이 때 인덱스의 길이는 데이터의 길이와 같아야 한다. 다음 예에서 이 “서울”, “부산” 등의 문자열이 인덱스의 값이다. 인덱스의 값을 인덱스 라벨 (label)이라고도 한다. 인덱스 라벨은 문자열 뿐 아니라 날짜, 시간, 정수 등도 가능하다.
s = pd.Series([9904312, 3448737, 2890451, 2466052],
index=["서울", "부산", "인천", "대구"])
---
서울 9904312
부산 3448737
인천 2890451
대구 2466052
dtype: int64
시리즈의 인덱스는 index 속성으로 접근할 수 있다. 시리즈의 값은 1차원 배열이며 values 속성으로 접근할 수 있다.
s.index
--> Index(['서울', '부산', '인천', '대구'], dtype='object')
s.values
--> array([9904312, 3448737, 2890451, 2466052])
name 속성을 이용하여 시리즈 데이터에 이름을 붙일 수 있다. index.name 속성으로 시리즈의 인덱스에도 이름을 붙일 수 있다.
s.name = "인구"
s.index.name = "도시"
s
---
도시
서울 9904312
부산 3448737
인천 2890451
대구 2466052
Name: 인구, dtype: int64
시리즈 연산
numpy 배열처럼 시리즈도 벡터화 연산을 할 수 있다. 다만 연산은 시리즈의 값에만 적용되며 인덱스 값은 변하지 않는다. 예를 들어 인구 숫자를 백만 단위로 만들기 위해 시리즈 객체를 1,000,000 으로 나누어도 인덱스 label에는 영향을 미치지 않는 것을 볼 수 있다.
s / 1000000
---
도시
서울 9.904312
부산 3.448737
인천 2.890451
대구 2.466052
Name: 인구, dtype: float64
시리즈 인덱싱
시리즈는 numpy 배열에서 가능한 인덱스 방법 이외에도 인덱스 label을 이용한 인덱싱도 할 수 있다. 배열 인덱싱이나 인덱스 label을 이용한 슬라이싱 (slicing)도 가능하다.
s[1], s["부산"]
--> (3448737, 3448737)
s[3], s["대구"]
--> (2466052, 2466052)
배열 인덱싱을 하면 부분적인 값을 가지는 시리즈 자료형을 반환한다. 자료의 순서를 바꾸거나 특정한 자료만 선택할 수 있다.
s[[0, 3, 1]]
---
도시
서울 9904312
대구 2466052
부산 3448737
Name: 인구, dtype: int64
s[["서울", "대구", "부산"]]
---
도시
서울 9904312
대구 2466052
부산 3448737
Name: 인구, dtype: int64
s[(250e4 < s) & (s < 500e4)] # 인구가 250만 초과, 500만 미만인 경우
---
도시
부산 3448737
인천 2890451
Name: 인구, dtype: int64
슬라이싱을 해도 부분적인 시리즈를 반환한다. 이 때 문자열 라벨을 이용한 슬라이싱을 하는 경우에는 숫자 인덱싱과 달리 콜론(:) 기호 뒤에 오는 값도 결과에 포함되므로 주의해야 한다.
s[1:3] # 두번째(1)부터 세번째(2)까지 (네번째(3) 미포함)
---
도시
부산 3448737
인천 2890451
Name: 인구, dtype: int64
s["부산":"대구"] # 부산에서 대구까지 (대구도 포함)
---
도시
부산 3448737
인천 2890451
대구 2466052
Name: 인구, dtype: int64
만약 라벨 값이 영문 문자열인 경우에는 인덱스 라벨이 속성인것처럼 점(.)을 이용하여 해당 인덱스 값에 접근할 수도 있다.
s0 = pd.Series(range(3), index=["a", "b", "c"])
---
s0
a 0
b 1
c 2
dtype: int64
s0.a
--> 0
s0.b
--> 1
'Python Library > Pandas' 카테고리의 다른 글
[Pandas] 데이터프레임 고급 인덱싱 (0) | 2022.02.15 |
---|---|
[Pandas] 데이터 입출력 (0) | 2022.02.15 |
[Pandas] 데이터프레임 (DataFrame) (0) | 2022.02.15 |
[Pandas] 시리즈 (Series) (2) (0) | 2022.02.15 |
판다스 (Pandas) (0) | 2022.02.15 |