티스토리 뷰

Pandas

  • Pandas는 ndarray(NumPy)를 기본 자료구조로 이용한다.
  • 이 ndarray를 가지고 Pandas는 두개의 또 다른 자료 구조를 이용한다.
  • Series,DataFrame

1) Series

동일한 데이터 타입의 복수개의 성분으로 구성되는 자료구조 -> 1차원

2) DataFrame

  • 엑셀/ Database의 Table과 같은 개념
  • 여러개의 Series로 구성되어 있다 -> 2차원
  • Pandas 설치 후 진행 : conda install pandas

 

Pandas의 Series

import numpy as np

# ndarray
arr = np.array([-1, 4, 5, 99], dtype=np.float64)
print(arr)

# pandas의 Series
s = pd.Series([-1, 4, 5, 99], dtype=np.float64)
print(s)

print(s.values)
# [-1.  4.  5. 99.] ndarray

print(s.index)     # RangeIndex
print(s.dtype)     # float64

 

  • Series 생성 시 index를 별도로 지정할 수 있다 => list로 지정 가능
  • 숫자 index는 기본적으로 사용이 가능하다.

 

s = pd.Series([1, -8, 5, 10],
             dtype=np.float64,
             index=['a', 'b', 'c', 'd'])
print(s)
print(s['a'])

Series에서도 Slicing이 가능할까?

print(s[1:3])         # Series로 결과 return 
print(s['b':'d'])     # 문자인덱스로 slicing하면 숫자인덱스로 하는 경우와 다르다.


# Boolean Indexing    
print(s[s % 2 == 0])   # 짝수만 출력!!

# Fancy Indexing
print(s[[0, 2, 3]])

# NumPy에서 했던 여러가지 작업들이 그대로 사용될 수 있다.
print(s.sum())

 

Series 연습문제를 해결하면서 특성을 좀 더 알아보자

  • A공장의 2020-01-01부터 10일간 생산량을 Series로 저장한다.
    • 생산량 결정 방법: 평균이 50이고 표준편차가 5인 정규분포에서 랜덤하게 생성(정수로 처리)
  • B공장의 2020-01-01부터 10일간 생산량을 Series로 저장한다.

    • 생산량은 평균이 70이고 표준편차가 8인 정규분포에서 추출

# Series 만들기

import numpy as np
import pandas as pd
from datetime import date, datetime, timedelta

start_day = datetime(2020, 1, 1)
factory_A = pd.Series([int(x) for x in np.random.normal(50, 5, (10, ))],
                      index=[start_day + timedelta(days=x) for x in range(10)])
print("factory_A")
print(factory_A,"\n")

factory_B = pd.Series([int(x) for x in np.random.normal(70, 8, (10, ))],
                      index=[start_day + timedelta(days=x) for x in range(10)])
print("factory_B")
print(factory_B,"\n")

# 날짜별로 모든 공장의 생산량 합계를 구한다.
print("======모든 공장의 생산량 합계=========")
print(factory_A+factory_B, "\n")

 

Series에 데이터 추가와 삭제

s = pd.Series([1, 2, 3, 4])
print(s, "\n")

# 새로운 데이터 추가
s[4] = 100

# 특정 index 삭제
s.drop(2)

 

python의 dictionary를 이용해서 Series를 만들기

  • dictionary의 key가 index가 된다.
import numpy as np
import pandas as pd

my_dict = {'서울':1000, '부산':2000, '제주':3000}

s = pd.Series(my_dict)
print(s,'\n')

s.name = '지역별 가격 데이터!!'
print(s,'\n')

s.index.name = '지역명'
print(s,'\n')

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함