본문 바로가기

순이코딩/Python

[Python] 파이썬 라이브러리 - pandas library(1) : Series

728x90
반응형

 


 

1. pandas library

 

1) pandas 기초

 

pandas는 pannel data의 약자입니다. 주요 특징으로는 다양한 파일 형식 (csv, excel, SQL, JSON 등) 지원, 데이터 정재와 조작에 특화된 라이브러리, NumPy와 호환이 잘된다는 점이 있습니다. DataFrame과 Series는 기본적으로 ndarray 구조이기 때문입니다.

그렇기 때문에 numpy와 함께 import 해서 사용하겠습니다.

import numpy as np
import pandas as pd

 

2) Series

 

Series는 1차원 배열 형태의 데이터 구조index와 value값으로 이루어져 있습니다. 시리즈를 생성할 때는 pd.Series를 사용해 생성합니다.

# 직접 값 넣기
pop = pd.Series([9668465,3391946,2942828,1450062])

# 리스트를 변환
list2 = [9668465,3391946,2942828,1450062]
pop = pd.Series(list2)

 

생성한 Series를 출력해 보면 자동으로 index 번호도 생성되어 있는 것을 확인할 수 있습니다. 이 자동으로 부여된 index스 번호가 아니라 직접 index 명을 지어서 사용할 수 있습니다.

index명은 다음과 같은 방법으로 지을 수 있습니다. 생성과 동시에 지을 수도, 생성한 후 지을 수도 있습니다.

# Series를 생성하면서 index명 짓기
pop = pd.Series([9668465,3391946,2942828,1450062], index=['서울','부산','인천','광주'])

# Seriees를 생성한 후 index명 짓기
pop.index = ['서울','부산','인천','광주']

 

index명을 지으면 위와 같이 번호 대신 index명이 뜨게 되는데 index명을 부여한다고 해서 번호가 사라진 것은 아닙니다. 단지 사용자의 눈에 보이지 않을 뿐입니다. 아래 그림과 같이 0번 index와 '서울' index가 같은 것을 볼 수 있습니다.

 

■ Series 정보 확인하기

 

Series 값을 확인할 때는 values 또는 array를 사용합니다. 둘 다 Series의 값을 확인할 수 있지만 출력 내용은 조금 다릅니다. array를 사용하면 Series가 PansdasArray라는 정보와 Series의 길이, 그리고 dtype까지 같이 출력되는 것을 볼 수 있습니다.

 

위에서 index 명을 부여할 때 사용했던 .index는 index명을 확인할 때 사용할 수도 있습니다. 아래와 같이 인덱스 명들과, dtype이 출력된 것을 볼 수 있습니다. 

 

dtype을 사용하면 요소들의 데이터 타입을 확인할 수 있고 type()에 Series 명을 넣으면 Series의 타입을 볼 수 있습니다. 아래에서 Series의 타입이 pandas의 Series타입인 것을 볼 수 있습니다.

 

name을 사용해 Series의 이름을 부여할 수 있고, index.name을 사용해 index에 이름을 부여할 수 있습니다.

 

■ Series 인덱싱, 슬라이싱

 

Series의 인덱싱도 다른 시퀀스 형 자료구조와 방법은 똑같습니다. 단 index명을 부여할 수 있는 만큼 index 번호뿐만 아니라 index명으로도 인덱싱이 가능합니다.

# index 번호로 인덱싱
print(pop[1])
print(pop[[0,3,1]]) # 다중 인덱싱

# index 명으로 인덱싱
print(pop['부산'])
print(pop[['서울','광주','부산']])

 

※ iloc와 loc 속성

iloc는 Integer Location의 줄임말로 index 번호를 가지고 인덱싱, 슬라이싱 하는 방법입니다. loc는 location의 줄임말로 index 명을 가지고 인덱싱, 슬라이싱 하는 방법입니다. 1차원 배열인 Series에서는 크게 의미가 없으니 이후, DaraFrame에서 더 자세히 다뤄보도록 하겠습니다.

 

■ Series Boolean 인덱싱

 

Boolean 인덱싱은 특정 조건을 만족하는 값들을 인덱싱 하는 것입니다. NumPy에서와 같습니다. Boolean mask를 통해 True값만 출력하는 것입니다.

pop[pop >= 3000000]

 

■ Series 데이터 추가, 수정, 삭제

 

추가할 때는 Series명['인덱스 명'] = 데이터값을 통해 추가할 수 있습니다. 마지막 행에 인덱스명과 데이터 값이 추가됩니다. 수정할 때의 문법도 똑같습니다. 추가할 때는 추가할 인덱스명과 추가할 데이터값이지만 수정할 때는 수정할 인덱스명과 수정할(바뀔) 데이터값을 입력하는 차이가 있습니다.

삭제할 때는 del 객체를 사용합니다. Series명만 작성하면 Series 전체가 삭제되기 때문에 Series명 뒤에 삭제할 인덱스를 잘 입력해야 합니다.

# 추가
pop['대구'] = 2465000

# 수정
pop['광주'] = 1501000

# 삭제
del pop['인천']

 

위 그림과 같이 대구가 추가되고 광주가 수정되고 인천이 삭제된 것을 확인할 수 있습니다.

 

 

728x90
반응형