본문 바로가기
Python Library/Pandas

[Pandas] 시리즈 (Series) (2)

by goatlab 2022. 2. 15.
728x90
반응형
SMALL

시리즈와 딕셔너리 자료형

 

시리즈 객체는 label 값에 의해 인덱싱이 가능하므로 실질적으로 인덱스 라벨 값을 키 (key)로 가지는 딕셔너리 자료형과 같다고 볼 수 있다. 따라서 딕셔너리 자료형에서 제공하는 in 연산도 가능하고 items 메서드를 사용하면 for 루프를 통해 각 원소의 키 (key)와 값 (value)을 접근할 수도 있다.

 

"서울" in s  # 인덱스 라벨 중에 서울이 있는가
--> True

"대전" in s  # 인덱스 라벨 중에 대전이 있는가
--> False

for k, v in s.items():
    print("%s = %d" % (k, v))
---
서울 = 9904312
부산 = 3448737
인천 = 2890451
대구 = 2466052

 

딕셔너리 객체에서 시리즈를 만들 수도 있다.

 

s2 = pd.Series({"서울": 9631482, "부산": 3393191, "인천": 2632035, "대전": 1490158})
s2
---
서울    9631482
부산    3393191
인천    2632035
대전    1490158
dtype: int64

 

딕셔너리의 원소는 순서를 가지지 않으므로 시리즈의 데이터도 순서가 보장되지 않는다. 만약 순서를 정하고 싶다면 인덱스를 리스트로 지정해야 한다.

 

s2 = pd.Series({"서울": 9631482, "부산": 3393191, "인천": 2632035, "대전": 1490158},
               index=["부산", "서울", "인천", "대전"])
s2
---
부산    3393191
서울    9631482
인천    2632035
대전    1490158
dtype: int64

 

인덱스 기반 연산

 

ds = s - s2
ds
---
대구         NaN
대전         NaN
부산     55546.0
서울    272830.0
인천    258416.0
dtype: float64

s.values - s2.values
--> array([ 6511121, -6182745,   258416,   975894])

 

대구와 대전의 경우에는 2010년 자료와 2015년 자료가 모두 존재하지 않기 때문에 계산이 불가능하므로 NaN (Not a Number)이라는 값을 가지게 된다. 또한 NaN 값이 float 자료형에서만 가능하므로 다른 계산 결과도 모두 float 자료형이 되었다는 점에 주의한다. NaN이 아닌 값을 구하려면 notnull 메서드를 사용한다.

 

ds.notnull()
---
대구    False
대전    False
부산     True
서울     True
인천     True
dtype: bool

ds[ds.notnull()]
---
부산     55546.0
서울    272830.0
인천    258416.0
dtype: float64
rs = (s - s2) / s2 * 100
rs = rs[rs.notnull()]
rs
---
부산    1.636984
서울    2.832690
인천    9.818107
dtype: float64

 

데이터의 갱신, 추가, 삭제

 

인덱싱을 이용하면 딕셔너리처럼 데이터를 갱신 (update)하거나 추가 (add)할 수 있다.

 

rs["부산"] = 1.63
rs
---
부산    1.630000
서울    2.832690
인천    9.818107
dtype: float64

rs["대구"] = 1.41
rs
---
부산    1.630000
서울    2.832690
인천    9.818107
대구    1.410000
dtype: float64

 

데이터를 삭제할 때도 딕셔너리처럼 del 명령을 사용한다.

 

del rs["서울"]
rs
---
부산    1.630000
인천    9.818107
대구    1.410000
dtype: float64

 

https://datascienceschool.net/01%20python/04.01%20%ED%8C%90%EB%8B%A4%EC%8A%A4%20%ED%8C%A8%ED%82%A4%EC%A7%80%EC%9D%98%20%EC%86%8C%EA%B0%9C.html

 

4.1 판다스 패키지의 소개 — 데이터 사이언스 스쿨

.ipynb .pdf to have style consistency -->

datascienceschool.net

 

728x90
반응형
LIST

'Python Library > Pandas' 카테고리의 다른 글

[Pandas] 데이터프레임 고급 인덱싱  (0) 2022.02.15
[Pandas] 데이터 입출력  (0) 2022.02.15
[Pandas] 데이터프레임 (DataFrame)  (0) 2022.02.15
[Pandas] 시리즈 (Series) (1)  (0) 2022.02.15
판다스 (Pandas)  (0) 2022.02.15