1. 데이터프레임이란?
~ 시리즈의 경우 단일 변수 기록은 용이하지만, 여러 변수에 대한 값을 기록하기에는 접학 하지 않다.
ex) 내 뱃살 증가치만 기록하면 시리즈도 괜찮지만
내 키, 뱃살, 콜레스테롤 수치, 혈당 등등 여러가지를 기록하기에는 어렵다는 그래서 데이터 프레임 사용
데이터프레임은 인덱스 하나와 여러 시리즈를 합친 자료형
팬더스 라이브러리 사용시 엑셀, HTML, DB로부터 데이터를 읽어와 데이터프레임 형태로 가공할 수 있다.
반대로 데이터프레임으로 HTML, DB 등으로 저장 가능
2. 딕셔너리를 이용한 데이터프레임 생성
(딕셔너리는 Key와 Value를 한 쌍으로 갖는 자료형)
2014년부터 2018년까지 KOSPI 지수와 KOSDAQ 지수를 이용하여 데이터프레임을 만들면
- 생성한 데이터프레임의 모습을 확인하고 싶다면 describe() 메서드 이용 - 생성한 데이터프레임의 인덱스 정보, 칼럼 정보 등을 확인하고 싶다면 info() 메서드 이용
>>> import pandas as pd
>>> df = pd.DataFrame({'KOSPI' :[1915,1961,2026,2467,2041],
'KOSDAQ' : [542,682,631,798,675]},
index=[2014,2015,2016,2017,2018])
>>> df
KOSPI KOSDAQ
2014 1915 542
2015 1961 682
2016 2026 631
2017 2467 798
2018 2041 675
>>> df.describe()
KOSPI KOSDAQ
count 5.000000 5.000000 #원소의 개수
mean 2082.000000 665.600000 #평균
std 221.117616 92.683871 # 표준편차
min 1915.000000 542.000000
25% 1961.000000 631.000000
50% 2026.000000 675.000000
75% 2041.000000 682.000000
max 2467.000000 798.000000
>>> df.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 5 entries, 2014 to 2018
Data columns (total 2 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 KOSPI 5 non-null int64
1 KOSDAQ 5 non-null int64
dtypes: int64(2)
memory usage: 120.0 bytes
3. 시리즈를 이용한 데이터프레임 생성
시리즈 여러 개를 합해서 데이터프레임을 생성 할 수 있다.
>>> kospi = pd.Series([1915, 1961, 2026, 2467, 2041],
index=[2014,2015,2016,2017,2018], name='KOSPI')
>>> kospi
2014 1915
2015 1961
2016 2026
2017 2467
2018 2041
Name: KOSPI, dtype: int64
>>> kosdaq = pd.Series([542, 682, 631, 798, 675],
index=[2014,2015,2016,2017,2018], name='KOSDAQ')
>>> kosdaq
2014 542
2015 682
2016 631
2017 798
2018 675
Name: KOSDAQ, dtype: int64
>>> df = pd.DataFrame({kospi.name:kospi, kosdaq.name:kosdaq})
>>> df
KOSPI KOSDAQ
2014 1915 542
2015 1961 682
2016 2026 631
2017 2467 798
2018 2041 675
4. 리스트를 이용한 데이터프레임 생성
리스트를 이용하여 한 행씩 추가해서 데이터프레임을 생성 할 수도 있다.
>>> columns = ['KOSPI', 'KOSDAQ']
>>> index = [2014,2015,2016,2017,2018]
>>> rows=[]
>>> rows.append([1915, 542])
>>> rows.append([1961, 682])
>>> rows.append([2026, 631])
>>> rows.append([2467, 798])
>>> rows.append([2041, 675])
>>> df = pd.DataFrame(rows, columns=columns, index=index)
>>> df
KOSPI KOSDAQ
2014 1915 542
2015 1961 682
2016 2026 631
2017 2467 798
2018 2041 675ㅇㅇㅇㅇ
5. 데이터프레임 순회 처리
데이터프레임은 다양한 방법으로 순회 처리가 가능하다
5.2 -> itertuples() 메서드는 데이터프레임의 각 행을 이름있는 튜플 형태로 반환시킨다.
# 5.1 인덱스를 사용한는 방법
>>> for i in df.index:
print(i, df['KOSPI'][i], df['KOSDAQ'][i])
2014 1915 542
2015 1961 682
2016 2026 631
2017 2467 798
2018 2041 675
# 5.2 데이터프레임 메서드를 이용하는 방법
>>> for row in df.itertuples(name='KRX'):
print(row)
KRX(Index=2014, KOSPI=1915, KOSDAQ=542)
KRX(Index=2015, KOSPI=1961, KOSDAQ=682)
KRX(Index=2016, KOSPI=2026, KOSDAQ=631)
KRX(Index=2017, KOSPI=2467, KOSDAQ=798)
KRX(Index=2018, KOSPI=2041, KOSDAQ=675)
>>> for row in df.itertuples():
print(row[0], row[1], row[2])
2014 1915 542
2015 1961 682
2016 2026 631
2017 2467 798
2018 2041 675
- 모든 내용은 파이썬 증권 데이터 분석 책을 공부하며 작성해보았습니다.
'Python > 증권 데이터 분석' 카테고리의 다른 글
3년 전 - 마이크로소프트, 삼성전자 - 주식을 샀다면?? 코딩을 이용한 수익 비교 (0) | 2021.01.04 |
---|---|
팬더스를 이용한 주식 시세 비교하기 (Comparison of Stock Price Using Panthers) (0) | 2020.12.22 |
파이썬 라이브러리인 pandas(판다스) 설치, 시리즈 (생성,변경,수정,인덱싱,삭제,시각화) (0) | 2020.12.19 |
array, ndarray 차이점, 코드 사용 방식 (0) | 2020.12.15 |
넘파이(NumPy) 배열 - 배열 생성 (0) | 2020.12.15 |
댓글