티스토리 뷰
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')
'멀티캠퍼스 AI과정 > 04 Pandas' 카테고리의 다른 글
Pandas 04 - 결측치 처리 (0) | 2020.09.15 |
---|---|
Pandas 04 - DataFrame 결합 Mearge (Join) (0) | 2020.09.15 |
Pandas 03 - DataFrame 집계함수, 통계기반 함수, 정렬, apply와 lambda (0) | 2020.09.15 |
Pandas 02 - DataFrame describe(), indexing, 행/칼럼 추가, 삭제 (0) | 2020.09.11 |
Pandas 02 - DataFrame (2차원) (0) | 2020.09.09 |
댓글