조금씩 꾸준히 완성을 향해

[Pandas] Pandas의 개념 & Series 객체 생성하고 다루기 본문

Python/Numpy & Pandas

[Pandas] Pandas의 개념 & Series 객체 생성하고 다루기

all_sound 2022. 9. 25. 09:51

Pandas

  • python의 데이터 분석 라이브러리 -> 데이터 테이블을 다루는 도구 (정형 데이터)
  • 기본적으로 numpy를 사용
    • numpy : python에서 배열을 다루는 최적의 라이브러리
    • pandas는 numpy를 효율적으로 사용하기 위해 인덱싱, 연산, 전처리 등 다양한 함수 제공

Pandas의 개념

  • Data Frame : 데이터 테이블 전체 객체
  • Series : 각 열 데이터를 다루는 객체

Series

  • Feature Vector 와 같은 개념
  • 일반적으로 하나의 피쳐 데이터를 포함하는 형태
  • 생성된 데이터 프레임 안에 포함될 수 있음
  • list, dict, ndarray 등 다양한 데이터 타입이 시리즈 객체 형태로 변환되기도 함.

  • 시리즈 객체를 생성하면 세 가지 요소(property) 생성
    • Data : 기존 다른 객체처럼 값을 저저장하는 요소
    • Index: 항상 0부터 시작하고, 숫자로만 할당하는 값
      - 시리즈 객체에서는 숫자, 문자열, 0 이외의 값으로 시작하는 숫자, 순서가 일정하지 않은 숫자를 입력할 수도 있음
      - 시리즈 객체에서는 인덱스 값의 중복을 허용
    • Data type : 넘파이의 데이터 타입과 일정하지 일치
  • 판다스는 넘파이의 Wrapper 라이브러리
    • 넘파이의 모든 기능 지원하고 데이터 타입도 그대로 적용

 

Series 객체 생성

데이터 프레임 객체를 먼저 생성하고 각 열에서 시리즈 객체를 뽑는 것이 일반적인 방법

 

 

  • Pandas 모듈 호출
import pandas as pd
import numpy as np

 

  • List > Series
list_data = [1,2,3,4,5]
pd.Series(list_data)

 

  • 판다스의 모든 객체는 인덱스 값을 기준으로 생성
list_data = [1,2,3,4,5]
list_name = ['a', 'b', 'c', 'd', 'e']
pd.Series(data = list_data, index = list_name)

 

  • 기존 데이터에 인덱스 값을 추가하면 NaN값 출력
dict_data = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
indexes = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
pd.Series(dict_data, index = indexes)

 

  • 다양한 시퀀스형 데이터 타입으로 저장가능
dict_data = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
pd.Series(dict_data, dtype=np.float32)

 

  • 이름 지정하여 저장 가능
dict_data = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
pd.Series(dict_data, dtype=np.float32, name='example_data')

 

  • 시리즈 정보 확인
x = pd.Series(dict_data, dtype=np.float32, name='example_data')
type(x)  # 시리즈의 타입 
# pandas.core.series.Series
print(x.values)  # 시리즈의 values 
#[1. 2. 3. 4. 5.]

print(x.index)  # 시리즈의 index
#Index(['a', 'b', 'c', 'd', 'e'], dtype='object')

print(x.dtype)  # 시리즈의 데이터타입
#float32

print(type(x.values))  # 시리즈 values의 타입 
#<class 'numpy.ndarray'>

print(x.name)  # 시리즈의 이름
#example_data

 

  • 객체 이름, index 이름 변경
x.name = "new"  # 객체 이름 변경
x.index.name = "id"  # index의 이름 지정가능
x

 

시리즈에서 데이터 추출하기

print(x[0]) # x의 1번째 원소 선택 
# 1.0
print(x['b']) # b 라벨을 가진 원소 선택 
# 2.0
print(x[['c','e']]) # c와 e 원소를 선택
print(x[[2, 4]]) # 2와 4 index를 선택

print(x['b':'d']) # b에서 d까지의 원소 선택 (python slicing과 달리 end 값이 포함된다)