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 값이 포함된다)