본문 바로가기
Python/증권 데이터 분석

팬더스 데이터프레임 여러 방법을 이용한 생성 및 순회 처리하기

by grey-hat hacker 2020. 12. 22.
728x90

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

 

 

 

- 모든 내용은 파이썬 증권 데이터 분석 책을 공부하며 작성해보았습니다. 

728x90
반응형

댓글