pandas의 DataFrame 객체는 Series 객체를 2차원으로 확장한 것입니다. 각 row는 하나의 독립적으로 추가된 정보이며 이 정보가 column 의 갯수만큼의 속성이 존재합니다.
AT&T의 주가정보가 저장된 csv파일을 읽어서 DataFrame을 만들 수 있습니다. 원하는 csv파일을 주피터 노트북의 upload 버튼을 눌러서 주피터 노트북 파일의 위치와 동일한 위치에 저장합니다.
pandas 라이브러리르 사용하기 위해 pandas 라이브러리를 import 합니다.
import numpy as np
import pandas as pd
from IPython.core.display import display, HTML
display(HTML("<style>.container {width:90% !important;}</style>"))
stock_t = pd.read_csv("./T.csv", index_col = 'Date')
stock_t.head()
Open | High | Low | Close | Adj Close | Volume | |
---|---|---|---|---|---|---|
Date | ||||||
2020-01-23 | 38.959999 | 38.990002 | 38.549999 | 38.630001 | 36.003380 | 29008000 |
2020-01-24 | 38.599998 | 38.779999 | 38.230000 | 38.500000 | 35.882225 | 34465300 |
2020-01-27 | 38.020000 | 38.570000 | 38.009998 | 38.250000 | 35.649220 | 35221600 |
2020-01-28 | 38.320000 | 38.799999 | 38.270000 | 38.580002 | 35.956783 | 30847800 |
2020-01-29 | 38.500000 | 38.560001 | 37.029999 | 37.049999 | 34.530815 | 57955000 |
read_csv 함수를 이용하여 T.csv파일을 dataframe 으로 저장하고 인덱스로 사용할 칼럼을 csv 파일의 "Date" 칼럼으로 지정하였습니다. 그리고 head()함수를 이용하여 dataframe의 첫 5개의 로우를 확인하였습니다.
DataFrame의 'high' 칼럼을 선택하기 위해서는 [] 연산자를 사용합니다.
stock_t['High']
Date 2020-01-23 38.990002 2020-01-24 38.779999 2020-01-27 38.570000 2020-01-28 38.799999 2020-01-29 38.560001 ... 2021-01-15 29.290001 2021-01-19 29.379999 2021-01-20 29.010000 2021-01-21 29.080000 2021-01-22 29.049999 Name: High, Length: 253, dtype: float64
속성을 사용하여 칼럼을 가져올 경우 'Adj Close' 같은 경우 공백이 있기 때문에 속성을 사용하여 선택할 수는 없습니다.
stock_t.High
Date 2020-01-23 38.990002 2020-01-24 38.779999 2020-01-27 38.570000 2020-01-28 38.799999 2020-01-29 38.560001 ... 2021-01-15 29.290001 2021-01-19 29.379999 2021-01-20 29.010000 2021-01-21 29.080000 2021-01-22 29.049999 Name: High, Length: 253, dtype: float64
stock_t.loc['2020-01-29']
Open 3.850000e+01 High 3.856000e+01 Low 3.703000e+01 Close 3.705000e+01 Adj Close 3.453081e+01 Volume 5.795500e+07 Name: 2020-01-29, dtype: float64
리스트로 여러 개의 로우를 선택하여 가져온다.
stock_t.loc[['2020-01-23','2020-01-24']]
Open | High | Low | Close | Adj Close | Volume | |
---|---|---|---|---|---|---|
Date | ||||||
2020-01-23 | 38.959999 | 38.990002 | 38.549999 | 38.630001 | 36.003380 | 29008000 |
2020-01-24 | 38.599998 | 38.779999 | 38.230000 | 38.500000 | 35.882225 | 34465300 |
여러 개의 로우의 값을 변경합니다.
backup = stock_t.loc[['2020-01-23', '2020-01-24']]
stock_t.loc[['2020-01-23', '2020-01-24']] = [[1,2,3,4,5,6], [10,20,30,40,50,60]]
stock_t.head()
Open | High | Low | Close | Adj Close | Volume | |
---|---|---|---|---|---|---|
Date | ||||||
2020-01-23 | 1.00 | 2.000000 | 3.000000 | 4.000000 | 5.000000 | 6 |
2020-01-24 | 10.00 | 20.000000 | 30.000000 | 40.000000 | 50.000000 | 60 |
2020-01-27 | 38.02 | 38.570000 | 38.009998 | 38.250000 | 35.649220 | 35221600 |
2020-01-28 | 38.32 | 38.799999 | 38.270000 | 38.580002 | 35.956783 | 30847800 |
2020-01-29 | 38.50 | 38.560001 | 37.029999 | 37.049999 | 34.530815 | 57955000 |
저장한 원래 로우값으로 stock_t를 원복합니다.
stock_t.loc[['2020-01-23', '2020-01-24']] = backup
stock_t.head()
Open | High | Low | Close | Adj Close | Volume | |
---|---|---|---|---|---|---|
Date | ||||||
2020-01-23 | 38.959999 | 38.990002 | 38.549999 | 38.630001 | 36.003380 | 29008000 |
2020-01-24 | 38.599998 | 38.779999 | 38.230000 | 38.500000 | 35.882225 | 34465300 |
2020-01-27 | 38.020000 | 38.570000 | 38.009998 | 38.250000 | 35.649220 | 35221600 |
2020-01-28 | 38.320000 | 38.799999 | 38.270000 | 38.580002 | 35.956783 | 30847800 |
2020-01-29 | 38.500000 | 38.560001 | 37.029999 | 37.049999 | 34.530815 | 57955000 |
index 정보를 이용하여 .iloc[ ] 은 이용하여 로우를 가져올 수 있습니다.
index는 맨 처음 로우가 0 으로 시작되는 값으로 설정됩니다.
0번째, 3번째 로우만 선택합니다.
stock_t.iloc[[0, 3]]
Open | High | Low | Close | Adj Close | Volume | |
---|---|---|---|---|---|---|
Date | ||||||
2020-01-23 | 38.959999 | 38.990002 | 38.549999 | 38.630001 | 36.003380 | 29008000 |
2020-01-28 | 38.320000 | 38.799999 | 38.270000 | 38.580002 | 35.956783 | 30847800 |
맨 첫번째 로우부터 3번째 로우까지 선택해 보겠습니다.
[0, 3)까지의 숫자를 갖는 list를 생성하고 iloc에 사용합니다.
stock_t.iloc[:4]
Open | High | Low | Close | Adj Close | Volume | |
---|---|---|---|---|---|---|
Date | ||||||
2020-01-23 | 38.959999 | 38.990002 | 38.549999 | 38.630001 | 36.003380 | 29008000 |
2020-01-24 | 38.599998 | 38.779999 | 38.230000 | 38.500000 | 35.882225 | 34465300 |
2020-01-27 | 38.020000 | 38.570000 | 38.009998 | 38.250000 | 35.649220 | 35221600 |
2020-01-28 | 38.320000 | 38.799999 | 38.270000 | 38.580002 | 35.956783 | 30847800 |
stock_t.iloc[0] = [1,2,3,4,5,6]
stock_t.head()
Open | High | Low | Close | Adj Close | Volume | |
---|---|---|---|---|---|---|
Date | ||||||
2020-01-23 | 1.000000 | 2.000000 | 3.000000 | 4.000000 | 5.000000 | 6 |
2020-01-24 | 38.599998 | 38.779999 | 38.230000 | 38.500000 | 35.882225 | 34465300 |
2020-01-27 | 38.020000 | 38.570000 | 38.009998 | 38.250000 | 35.649220 | 35221600 |
2020-01-28 | 38.320000 | 38.799999 | 38.270000 | 38.580002 | 35.956783 | 30847800 |
2020-01-29 | 38.500000 | 38.560001 | 37.029999 | 37.049999 | 34.530815 | 57955000 |
2020년 1월 24일의 주가가 가장 높았을 때인 'High'정보를 확인할 때 at[ ]을 사용할 수 있습니다.
stock_t.at['2020-01-24','High']
38.779999
stock_t.at['2020-01-24','High'] = 1
stock_t.head()
Open | High | Low | Close | Adj Close | Volume | |
---|---|---|---|---|---|---|
Date | ||||||
2020-01-23 | 1.000000 | 2.000000 | 3.000000 | 4.000000 | 5.000000 | 6 |
2020-01-24 | 38.599998 | 1.000000 | 38.230000 | 38.500000 | 35.882225 | 34465300 |
2020-01-27 | 38.020000 | 38.570000 | 38.009998 | 38.250000 | 35.649220 | 35221600 |
2020-01-28 | 38.320000 | 38.799999 | 38.270000 | 38.580002 | 35.956783 | 30847800 |
2020-01-29 | 38.500000 | 38.560001 | 37.029999 | 37.049999 | 34.530815 | 57955000 |
2020년 1월 24일 high값이 1로 변경되었습니다.
.iat[ ]을 이용하면 index 정보를 이용하여 값을 얻을 수 있습니다.
stock_t.iat[1,2]
38.23
stock_t.iat[1,1] = 38.779999
stock_t.head()
Open | High | Low | Close | Adj Close | Volume | |
---|---|---|---|---|---|---|
Date | ||||||
2020-01-23 | 1.000000 | 2.000000 | 3.000000 | 4.000000 | 5.000000 | 6 |
2020-01-24 | 38.599998 | 38.779999 | 38.230000 | 38.500000 | 35.882225 | 34465300 |
2020-01-27 | 38.020000 | 38.570000 | 38.009998 | 38.250000 | 35.649220 | 35221600 |
2020-01-28 | 38.320000 | 38.799999 | 38.270000 | 38.580002 | 35.956783 | 30847800 |
2020-01-29 | 38.500000 | 38.560001 | 37.029999 | 37.049999 | 34.530815 | 57955000 |
2020년 1월 24일 high값이 38.7799로 변경되었습니다.
칼럼의 0번째 위치는 index가 Data로 설정되었기 때문에 Open이 0번째 입니다.